Visit Mozilla.org

Core JavaScript 1.5 Reference:Global Objects:Object:isPrototypeOf

出典: MDC


isPrototypeOf を使うと、あるオブジェクトインスタンスが問題 (話題) のクラスをその親の1つとして持っているかどうかをチェックすることができます。

例えば、以下のコードはクラス Question と、それを拡張した別のクラス SecondaryQuestion を生成します。

function Question () {
  this.answer = 42;
}

function SecondaryQuestion () {

}
SecondaryQuestion.prototype = new Question();

こうした後、もしあなたが SecondaryQuestion をインスタンス化して、それが親クラスとして Question を持っているかを調べる必要があるならば、このようにして調べることができます。

var myquestion = new SecondaryQuestion();

...

if (Question.prototype.isPrototypeOf(myquestion)) {
  // 問題について何かする
}

これは特に、パラメータとして特定のクラスのインスタンスのみ受け付けることのできる関数やクラスのメソッドがあるときに便利でしょう。

function guessAnswer(q) {
  if (Question.prototype.isPrototypeOf(q)) {
    // 問題に答えようとする
    // Question と SecondaryQuestion のどちらを受け取ったのかは、
    // どちらも Question なので関係ない。
  } else {
    // うろたえる
  }
}