【JavaScript ECMAScript】Object::Object.setPrototypeOf静的メソッドの使い方
Object.setPrototypeOf()静的メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Object.setPrototypeOf()メソッドは、指定されたオブジェクトの内部的なプロトタイプ([[Prototype]]プロパティ)を、与えられた別のオブジェクトに設定し直すメソッドです。
このメソッドは、既に作成されたオブジェクトのプロトタイプチェーンを動的に変更する際に利用されます。プロトタイプは、オブジェクトがプロパティやメソッドにアクセスしようとしたときに、自身にそのプロパティがない場合に次に探す親オブジェクトのような役割を果たします。
引数として、第一引数に対象となるオブジェクト、第二引数にそのオブジェクトの新しいプロトタイプとなるオブジェクト(またはnull)を指定します。成功すると、第一引数で渡された対象オブジェクトそのものが返されます。
通常、オブジェクトのプロトタイプは、オブジェクトが生成される際に一度だけ設定されるものです。このメソッドを使うと、オブジェクトが作成された後にその継承元を変更できるため、柔軟なオブジェクト構造を構築することが可能です。
しかし、既存のオブジェクトのプロトタイプを動的に変更することは、JavaScriptエンジンの最適化を妨げ、アプリケーションのパフォーマンスに悪影響を及ぼす可能性があります。また、コードの予測可能性を低下させる原因にもなりかねません。そのため、新しいオブジェクトを作成する際にプロトタイプを設定するObject.create()などの利用が推奨されることが多く、Object.setPrototypeOf()は特別な状況やレガシーコードの対応などで慎重に用いるべきメソッドとされています。
構文(syntax)
1Object.setPrototypeOf(obj, prototype);
引数(parameters)
obj, prototype
- obj: object: プロトタイプを設定する対象のオブジェクト
- prototype: object: objに設定する新しいプロトタイプオブジェクト
戻り値(return)
Object
指定されたオブジェクトのプロトタイプを設定した後の、そのオブジェクト自身を返します。