Web/DB プログラミング徹底解説

ホーム > JavaScript プログラミング > プロトタイプ・チェーン中のオブジェクト確認 isPrototypeOf ~ JavaScript によるオブジェクト指向プログラミング

プロトタイプ・チェーン中のオブジェクト確認 isPrototypeOf ~ JavaScript によるオブジェクト指向プログラミング

あるオブジェクトの継承関係を調べる方法は、instanceof を使う方法の他、もうひとつあります。

ここでは例を挙げて解説します。

まず、Animal クラスがあるとします。

コンストラクタはこんなです。(何もしません)

function Animal(){
}

次に、Animal クラスから派生する Person クラスを作ります。

function Person(){
}

Person.prototype = new Animal();

今は簡略化のため、何もせずに次に行きます。

さらに、Person クラスから派生する Student クラスを定義します。


function Student(){
}

Student.prototype = new Person();

以上で、ベースクラスから順に、


Animal → Person → Student


という継承 (派生) 関係です。特に is-a の関係です。

この状態で、Student クラスのオブジェクトを作り、 Person クラスが Student クラスのプロトタイプ・チェーンの中にいるかどうか確認する には次のようにします。

var s = new Student();

alert( Person.prototype.isPrototypeOf ( s ) );  // true が返る

ちなみに、Animal.prototype.isPrototypeOf (s) も true が返ります。 Animal も Person も、Student のプロトタイプチェーンの中にいるということですね。

JavaScript によるオブジェクト指向プログラミング 目次 | >>組み込みオブジェクトの拡張