JSONでオブジェクト作ったらNEWできない。この理由がずっと分らなかった。というより、Newする方法があると思っていた。どうやらまともにNEWすることは不可能なようだ。よく考えてみたら当たり前なのだけれどJSONはObjectなのでついついNewしたくなる。
var Dog = { name:"", owner:"", bark:function(){ alert("わんわん") } } dog.name = "たろー";//出来る var pet = new Dog("たろー");//出来ない
じゃぁdog.prototypeがあるじゃないか、とおもってprototypeを指定しようとしてもエラーになる*1
var Animal = { name:"", owner:"",s str:"うがが", bark:function(){ alert(this.str); } } var dog = new Object; dog.prototype = Animal; //dog.bark();//出来ない alert(dog.protoype);//null
まぁ当たり前だけれど出来ません。new が出来るのはFunctionで定義した場合。だからAnimalオブジェクトをFunctionで定義してみた。
var Animal = function(name,str){ this.name = name || "UMA"; this.owner; this.str = str || "うがが"; this.bark=function(){ alert(this.str); } } var dog1 = new Object; dog= new Animal("たろー","わんわん"); dog1.protoype = dog; dog.bark();//出来る //似てるけど、出来ない例 dog2 = {}; dog2.prototype = new Animal(); dog2.bark();//出来ない