--- title: Reflect.getOwnPropertyDescriptor() slug: Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor tags: - ECMAScript 2015 - JavaScript - Method - Reference - Reflect translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor ---
静的な Reflect.getOwnPropertyDescriptor()
メソッドは {{jsxref("Object.getOwnPropertyDescriptor()")}} と似ています。オブジェクトにプロパティが存在する場合は、指定されたプロパティのプロパティ記述子を返します。一方、プロパティが存在しない場合は {{jsxref("undefined")}} を返します。
Reflect.getOwnPropertyDescriptor(target, propertyKey)
target
propertyKey
target
オブジェクト内にプロパティが存在する場合は、プロパティ記述子オブジェクト、または {{jsxref("undefined")}}。
{{jsxref("TypeError")}}: target
が {{jsxref("Object")}} ではない場合
Reflect.getOwnPropertyDescriptor
オブジェクトにプロパティが存在する場合、与えられたプロパティのプロパティディスクリプタを返します。一方、プロパティが存在しない場合は、{{jsxref("undefined")}} を返します。{{jsxref("Object.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}
このメソッドへの最初の引数がオブジェクトではない (プリミティブであった) 場合、 {{jsxref("TypeError")}} が発生します。 {{jsxref("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 }
仕様書 |
---|
{{SpecName('ESDraft', '#sec-reflect.getownpropertydescriptor', 'Reflect.getOwnPropertyDescriptor')}} |
{{Compat("javascript.builtins.Reflect.getOwnPropertyDescriptor")}}