JavaScript/Object/prototype/isPrototypeOf
表示
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.prototype
と Object.prototype
が person
オブジェクトのプロトタイプチェーン内に存在するかどうかを確認しています。両方とも 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.prototype
と Animal.prototype
が person
オブジェクトのプロトタイプチェーン内に存在するかどうかを確認しています。obj
オブジェクトは Person.prototype
のプロトタイプチェーン内に存在しないため、false
が返されます。
注意点
[編集]- プロトタイプチェーンの検索:
isPrototypeOf()
は、指定されたオブジェクトのプロトタイプチェーンを検索し、プロトタイプオブジェクトがそのチェーン内に存在するかどうかを確認します。 - 直接のプロトタイプではない場合: プロトタイプオブジェクトが直接のプロトタイプでなくても、プロトタイプチェーン内に存在する場合、
true
が返されます。 - オブジェクト以外の引数:
isPrototypeOf()
は、オブジェクト以外の値に対して呼び出されると、その値をオブジェクトに変換しようとします。例えば、数値や文字列を渡すと、それらのラッパーオブジェクトのプロトタイプチェーンを検索します。 - null や undefined:
null
やundefined
を引数として渡すと、TypeError
が発生します。
脚註
[編集]- ^これは、オブジェクト間のプロトタイプ関係を確認するために使用されます。