【Node.js24.x】Object::setPrototypeOf()メソッドの使い方
setPrototypeOfメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
setPrototypeOfメソッドは、指定されたオブジェクトの内部プロトタイプ([[Prototype]]プロパティ)を別のオブジェクトまたはnullに設定するメソッドです。JavaScriptにおいてオブジェクトは、自身のプロパティやメソッドが見つからなかった場合、そのプロトタイプを通じて親オブジェクトのプロパティやメソッドを探索します。この仕組みが「プロトタイプチェーン」と呼ばれ、JavaScriptにおける継承の基礎となっています。
このメソッドは、第一引数にプロトタイプを変更したい対象のオブジェクトを、第二引数に新しいプロトタイプとして設定したいオブジェクト、またはプロトタイプを持たないようにしたい場合はnullを受け取ります。そして、プロトタイプが変更された元のオブジェクトを戻り値として返します。
Object.setPrototypeOfは、既存のオブジェクトの継承元を動的に変更する能力を提供します。例えば、あるオブジェクトが元々持っていたプロパティやメソッドに加え、後から別のオブジェクトの機能を引き継がせたい場合に利用できます。しかし、オブジェクトのプロトタイプを動的に変更することは、JavaScriptエンジンの最適化に影響を与え、パフォーマンスが低下する可能性があるため、頻繁な使用は推奨されません。通常は、Object.create()関数を使用してオブジェクトを生成する際にプロトタイプを設定したり、クラス構文のextendsキーワードを使って継承関係を定義したりする方法が推奨されます。このメソッドは、特定の高度なユースケースや、古いJavaScriptのコードとの互換性が必要な場合などに限定して利用されることが一般的です。
構文(syntax)
1const targetObject = {}; 2const newPrototype = { 3 message: "Hello from prototype" 4}; 5 6Object.setPrototypeOf(targetObject, newPrototype);
引数(parameters)
obj, prototype
- obj: object: プロトタイプを変更したいオブジェクト
- prototype: object | null: 設定したい新しいプロトタイプ。nullを指定すると、プロトタイプチェーンから切り離されます。
戻り値(return)
オブジェクト
Object.setPrototypeOf() メソッドは、指定されたオブジェクトのプロトタイプを設定し、そのオブジェクト自体を返します。