プロトタイプチェーン
プロトタイプの連鎖について、まぁいわゆるクラスの継承ですよねぇ…たぶん...?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が返ります。