コンテンツにスキップ

JavaScript/Object/prototype/isPrototypeOf

出典: フリー教科書『ウィキブックス(Wikibooks)』

Object.prototype.isPrototypeOf() は、指定されたオブジェクトが別のオブジェクトのプロトタイプチェーン内に存在するかどうかを判定するメソッドです。このメソッドは、あるオブジェクトが別のオブジェクトのプロトタイプであるかどうかを確認するために使用されます[1]

構文

[編集]
prototypeObj.isPrototypeOf(obj)
  • prototypeObj: プロトタイプチェーン内に存在するかどうかを確認する対象のプロトタイプオブジェクト。
  • obj: プロトタイプチェーンを検索する対象のオブジェクト。

[編集]

プロトタイプチェーン内のオブジェクトを確認するプログラム

[編集]

以下のプログラムは、Object.prototype.isPrototypeOf() を使用してプロトタイプチェーン内のオブジェクトを確認します。

functionPerson(name){this.name=name;}Person.prototype.age=30;constperson=newPerson('Alice');console.log(Person.prototype.isPrototypeOf(person));// trueconsole.log(Object.prototype.isPrototypeOf(person));// true

このプログラムでは、Person.prototypeObject.prototypeperson オブジェクトのプロトタイプチェーン内に存在するかどうかを確認しています。両方とも true が返されます。

プロトタイプチェーン内に存在しないオブジェクトを確認するプログラム

[編集]

以下のプログラムは、Object.prototype.isPrototypeOf() を使用してプロトタイプチェーン内に存在しないオブジェクトを確認します。

functionAnimal(){}functionPerson(){}Person.prototype=Object.create(Animal.prototype);constperson=newPerson();console.log(Animal.prototype.isPrototypeOf(person));// trueconsole.log(Person.prototype.isPrototypeOf(person));// trueconsole.log(Object.prototype.isPrototypeOf(person));// trueconstobj={};console.log(Person.prototype.isPrototypeOf(obj));// false

このプログラムでは、Person.prototypeAnimal.prototypeperson オブジェクトのプロトタイプチェーン内に存在するかどうかを確認しています。obj オブジェクトは Person.prototype のプロトタイプチェーン内に存在しないため、false が返されます。

注意点

[編集]
  • プロトタイプチェーンの検索: isPrototypeOf() は、指定されたオブジェクトのプロトタイプチェーンを検索し、プロトタイプオブジェクトがそのチェーン内に存在するかどうかを確認します。
  • 直接のプロトタイプではない場合: プロトタイプオブジェクトが直接のプロトタイプでなくても、プロトタイプチェーン内に存在する場合、true が返されます。
  • オブジェクト以外の引数: isPrototypeOf() は、オブジェクト以外の値に対して呼び出されると、その値をオブジェクトに変換しようとします。例えば、数値や文字列を渡すと、それらのラッパーオブジェクトのプロトタイプチェーンを検索します。
  • null や undefined: nullundefined を引数として渡すと、TypeError が発生します。

脚註

[編集]
  1. ^これは、オブジェクト間のプロトタイプ関係を確認するために使用されます。

外部リンク

[編集]


close