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();//出来ない