Javascriptのprototypeについて勉強した..
とりあえず、Animalとapoとahoを定義。
function Animal(){
this.life=1;
this.eye=2;
this.listup=function(x){
mes("====");
for ( i in x){
mes(i+" : "+x[i]);
}
};
}
var apo={
fly:function(x){
alert(x+" BATABATA");
}
}
function aho(){};
例1
c=apo; // ハッシュでオブジェクト定義
c.prototype ない
c.prototype=apo; これで継承されたか?→
テスト
c.__proto__=apo; これで継承されたか?→
テスト
例2
d=aho; // 関数オブジェクトでオブジェクト定義 => d.prototypeある 関数はオブジェクトだから.
alert(d.prototype); // ある
d.prototype ある
d.prototype=apo; これで継承されたか?→
テスト
d.__proto__=apo; これで継承されたか?→
テスト
例3
var a=new Animal(); // newで関数オブジェクトでオブジェクト定義
a.prototype ない
a.prototype=apo; これで継承されたか?→
テスト
a.__proto__=apo; これで継承されたか?→
テスト
ここでaのprototypeにプロパティ追加すると?
ない。
a.fuck
prototypeにfuck追加。
apo.fuck="OK"; →
a.fuck
apo は参照のようだな。というか今もaとつながってる。
さらにapoをいじる。
flyの動作変更
動作変わった。
a.fly(); な。
a.listup(a);
例4
e={}; // オブジェクトリテラルでオブジェクト定義
e.prototype ない
e.prototype=apo; これで継承されたか?→
テスト
e.__proto__=apo; これで継承されたか?→
テスト