プロトタイプ・チェーン中のオブジェクト確認 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 のプロトタイプチェーンの中にいるということですね。