Reflect.getOwnPropertyDescriptor()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
静的な Reflect.getOwnPropertyDescriptor()
メソッドは Object.getOwnPropertyDescriptor()
と似ています。オブジェクトにプロパティが存在する場合は、指定されたプロパティのプロパティ記述子を返します。一方、プロパティが存在しない場合は undefined
を返します。
試してみましょう
構文
Reflect.getOwnPropertyDescriptor(target, propertyKey)
引数
target
-
プロパティを探す対象のオブジェクト。
propertyKey
-
所有しているプロパティ記述子を取得するためのプロパティ名。
返値
target
オブジェクト内にプロパティが存在する場合は、プロパティ記述子オブジェクト、または undefined
。
例外
解説
Reflect.getOwnPropertyDescriptor
オブジェクトにプロパティが存在する場合、与えられたプロパティのプロパティディスクリプタを返します。一方、プロパティが存在しない場合は、undefined
を返します。Object.getOwnPropertyDescriptor()
との唯一の違いは、非オブジェクトの対象がどのようにバンドルされるかだけです。
例
Reflect.getOwnPropertyDescriptor() の使用
Reflect.getOwnPropertyDescriptor({ x: "hello" }, "x");
// {value: "hello", writable: true, enumerable: true, configurable: true}
Reflect.getOwnPropertyDescriptor({ x: "hello" }, "y");
// undefined
Reflect.getOwnPropertyDescriptor([], "length");
// {value: 0, writable: true, enumerable: false, configurable: false}
Object.getOwnPropertyDescriptor() との違い
このメソッドへの最初の引数がオブジェクトではない (プリミティブであった) 場合、 TypeError
が発生します。 Object.getOwnPropertyDescriptor
だと、非オブジェクトである最初の引数は強制的にオブジェクトに変換されます。
Reflect.getOwnPropertyDescriptor("foo", 0);
// TypeError: "foo" is not non-null object
Object.getOwnPropertyDescriptor("foo", 0);
// { value: "f", writable: false, enumerable: true, configurable: false }
仕様書
Specification |
---|
ECMAScript Language Specification # sec-reflect.getownpropertydescriptor |
ブラウザーの互換性
BCD tables only load in the browser