【Node.js24.x】Object::isPrototypeOf()メソッドの使い方
isPrototypeOfメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
isPrototypeOfメソッドは、あるオブジェクトが別のオブジェクトのプロトタイプチェーン上に存在するかどうかを確認するメソッドです。このメソッドは、Node.jsのObjectクラスに属しており、JavaScriptのすべてのオブジェクトから利用できます。
具体的には、このメソッドを呼び出したオブジェクト(レシーバーオブジェクト)が、引数として渡されたオブジェクト(ターゲットオブジェクト)のプロトタイプ(原型)またはそのプロトタイプチェーン内のどこかに存在するかを判定します。もし、レシーバーオブジェクトがターゲットオブジェクトのプロトタイプチェーン上に含まれる場合はtrueを返し、そうでなければfalseを返します。
この機能は、オブジェクト間の継承関係や、あるオブジェクトが別のオブジェクトの基盤となっているかを動的に検証したい場合に非常に役立ちます。例えば、特定の機能を提供するオブジェクトが、実際に使用されているオブジェクトの親となっているかを確認する際に利用できます。instanceof演算子もオブジェクトの型をチェックする際に使われますが、isPrototypeOfはコンストラクタ関数に依存せず、純粋にオブジェクトのプロトタイプ階層のみを調べる点が異なります。システムエンジニアが複雑なオブジェクト構造を理解し、その関係性をプログラムで確認するのに適したメソッドです。
構文(syntax)
const protoA = { value: 1 };
const objB = Object.create(protoA);
const objC = {};
// protoA が objB のプロトタイプチェーン上にあるかを確認
console.log(protoA.isPrototypeOf(objB)); // true
// protoA が objC のプロトタイプチェーン上にあるかを確認
console.log(protoA.isPrototypeOf(objC)); // false
// protoA が protoA 自身のプロトタイプチェーン上にあるかを確認(自分自身はプロトタイプではないためfalse)
console.log(protoA.isPrototypeOf(protoA)); // false
// Object.prototype が objB のプロトタイプチェーン上にあるかを確認
console.log(Object.prototype.isPrototypeOf(objB)); // true
引数(parameters)
obj
- obj: object: プロトタイプチェーンを調べる対象となるオブジェクト
戻り値(return)
boolean
指定されたオブジェクトが、呼び出し元のオブジェクトのプロトタイプチェーン上に存在するかどうかを示す真偽値を返します。