今回は、JavaScriptで継承のようなことをやってみます。 |
prototypeにぶち込んでみる |
function Main1(){ var a=function(){ this.x=0; }; var b=function(){ this.y=0; }; b.prototype=new a; var c=new b; alert(c.x); alert(c.y); alert(c.constructor); } |
まさかの展開です。c.yはちゃんと定義されているのに(この点も多少謎ですが)、 c.constructorはa、という…? 確かに継承っぽいことが出来ているようです。ちなみに、 b.prototype=a;とすると、変なことになります。 |
こういうやり方はどうでしょうか。 |
function Main2(){ var a=function(){ this.x=0; }; var b=function(){ var t=new a(); t.y=0; return t; }; var c=new b; alert(c.x); alert(c.y); alert(c.constructor); } |
これだって立派な「継承っぽいもの」だと思いますが。 これは前回の実験とも関連していて、var c=new bはvar c=b()としても同じです。 |
top 戻る |