第56回
今回は、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  戻る