Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】Proxy::handler.getOwnPropertyDescriptorインスタンスメソッドの使い方

handler.getOwnPropertyDescriptor()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

handler.getOwnPropertyDescriptor()メソッドは、JavaScriptのProxyオブジェクトにおいて、対象となるオブジェクト自身のプロパティの記述子(Property Descriptor)を取得する操作をインターセプト(横取り)するメソッドです。このメソッドは、Object.getOwnPropertyDescriptor()関数や、プロパティの定義、オブジェクトの拡張性に関わる操作(例: Object.defineProperty(), Object.seal(), Object.freeze(), Object.preventExtensions(), Reflect.getOwnPropertyDescriptor()など)がプロキシされたオブジェクトに対して実行された際に呼び出されます。

主な役割は、ターゲットオブジェクトのプロパティに関する詳細な情報(値、書き込み可能か、列挙可能か、設定可能かなど)を読み取る、またはその情報をカスタマイズして返すことです。システムエンジニアは、このメソッドを使うことで、プロパティ情報の取得に対するカスタムロジックを組み込むことができます。例えば、特定のプロパティの記述子を隠蔽したり、存在しないプロパティに対して擬似的な記述子を返したりすることが可能です。

このメソッドが返す値は、標準的なプロパティ記述子オブジェクトか、またはundefinedである必要があります。特に注意すべき点として、ターゲットオブジェクトに存在する非設定可能(non-configurable)なプロパティについて、handler.getOwnPropertyDescriptor()が返す記述子は、実際のターゲットプロパティの記述子と完全に一致していなければなりません。もし矛盾する情報を返すと、TypeErrorが発生し、プログラムが停止する可能性があります。これにより、オブジェクトの整合性を保つことが保証されています。

公式リファレンス: handler.getOwnPropertyDescriptor()

構文(syntax)

1new Proxy(target, {
2  getOwnPropertyDescriptor(target, property) {
3    return Reflect.getOwnPropertyDescriptor(target, property);
4  }
5});

引数(parameters)

target, prop

  • target: 処理対象となるオブジェクト
  • prop: 取得しようとしているプロパティの名前

戻り値(return)

PropertyDescriptor | undefined

指定されたプロパティのディスクリプタ、またはプロパティが存在しない場合は undefined を返します。

関連コンテンツ