【JavaScript ECMAScript】Reflect::Reflect.setPrototypeOf静的メソッドの使い方
Reflect.setPrototypeOf()静的メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Reflect.setPrototypeOf()メソッドは、特定のオブジェクトの内部プロトタイプ([[Prototype]])を設定する操作を実行するメソッドです。JavaScriptのオブジェクトは、プロトタイプチェーンと呼ばれる仕組みを通じて、他のオブジェクトからプロパティやメソッドを継承します。このメソッドは、対象となるオブジェクトの継承元(プロトタイプ)を動的に変更するために利用されます。
このメソッドは、第一引数にプロトタイプを変更したいターゲットオブジェクトを、第二引数に新しく設定するプロトタイプオブジェクト(またはnull)を受け取ります。プロトタイプの設定操作が成功した場合はtrueを返し、何らかの理由で失敗した場合はfalseを返します。
Object.setPrototypeOf()と似ていますが、Reflect.setPrototypeOf()の大きな特徴は、操作の成否を真偽値で明確に返す点です。例えば、Object.preventExtensions()によって拡張不可にされたオブジェクトのプロトタイプを変更しようとした場合、Object.setPrototypeOf()はTypeErrorをスローしてプログラムを中断させます。一方、Reflect.setPrototypeOf()はエラーをスローせずにfalseを返すため、プログラムの実行を継続しながら、より柔軟にエラー状況を判断し、ハンドリングすることが可能です。オブジェクトの継承関係を安全かつ堅牢に制御したい場合に有効なメソッドです。
構文(syntax)
1Reflect.setPrototypeOf(target, prototype);
引数(parameters)
target, prototype
- target: object: プロトタイプを変更したいオブジェクト
- prototype: object | null: target の新しいプロトタイプとなるオブジェクト、または null
戻り値(return)
boolean
指定されたオブジェクトのプロトタイプを指定したプロトタイプに設定できたかどうかを示す真偽値を返します。設定に成功した場合は true、失敗した場合は false を返します。