【JavaScript ECMAScript】Reflect::Reflect.get静的メソッドの使い方
Reflect.get()静的メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Reflect.get()メソッドは、特定のオブジェクトから指定されたプロパティの値を取得するメソッドです。これは、JavaScriptにおけるオブジェクトのプロパティアクセス操作を、汎用的な関数として提供するもので、通常のobject.propertyやobject['property']といったアクセス方法と似ていますが、より詳細な制御を可能にします。
このメソッドは、第一引数にプロパティを取得したい対象のオブジェクト(target)、第二引数に取得したいプロパティの名前(propertyKey)を受け取ります。さらに、オプションの第三引数としてreceiverを指定できます。receiverは、取得しようとしているプロパティがgetter関数である場合に、そのgetter関数のthisコンテキストとして設定されるオブジェクトです。これにより、getterが継承チェーン上にある場合でも、元のプロパティアクセス操作が開始されたオブジェクトをthisとして参照させるといった、高度なプロパティアクセスの制御が可能になります。
Reflect.get()メソッドの主な用途は、JavaScriptのメタプログラミング機能の一つであるProxyオブジェクトのハンドラ内部で、基となるオブジェクトのプロパティを安全かつ意図した動作で取得する際です。例えば、Proxyのgetトラップにおいて、プロパティのアクセスをカスタマイズしながらも、最終的にはReflect.get()を使ってデフォルトのプロパティ取得動作を実行するといった使い方が一般的です。対象のtargetがオブジェクトでない場合にはTypeErrorが発生しますのでご注意ください。
構文(syntax)
1const targetObject = { 2 propertyName: 'propertyValue' 3}; 4Reflect.get(targetObject, 'propertyName');
引数(parameters)
target, propertyKey, receiver
- target: オブジェクト
- propertyKey: プロパティの名前またはシンボル
- receiver: オブジェクト、デフォルトはtarget
戻り値(return)
any
指定されたオブジェクトのプロパティ値を取得します。プロパティが存在しない場合は undefined を返します。