プロトタイプチェーン
プロトタイプの連鎖について、まぁいわゆるクラスの継承ですよねぇ…たぶん...?hoge2 = function( ) { this.c = 3; } hoge = function( num ) { this.num = num; }; hoge.prototype = new hoge2( ); hoge.prototype.calc = function( ) { return this.num * this.c; };前回使用したクラスを少し改造してみました。hogeオブジェクトの prototypeにhoge2オブジェクトを追加します。
暗黙の参照があるのでhoge2のプロパティがそのまま使えます。
var objC = new hoge( 10 );
alert( objC.calc() );
よって結果、30が表示されます。
プロパティの有無を調べる
そのオブジェクト自信が持っているプロパティなのかprototypeが持っているプロパティなのかを調べるメソッドです。
alert( objC.hasOwnProperty("c") ); // false が返る
alert( objC.hasOwnProperty("num") ); // true が返る
このようにhogeオブジェクトのobjCは「c」プロパティは継承している物ではないのでfalse「num」は
実際持っている物なのでtrueが返ります。