--- title: Object.getOwnPropertyDescriptors() slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors tags: - JavaScript - Method - Object translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors ---
Object.getOwnPropertyDescriptors()
メソッドは、指定したオブジェクトのすべてのプロパティ記述子を返します。
Object.getOwnPropertyDescriptors(obj)
obj
オブジェクトのすべてのプロパティ記述子を含むオブジェクト。プロパティがない場合、空オブジェクトの可能性がある。
このメソッドは、オブジェクトのすべての独自のプロパティの正確な記述の検査を可能にします。 JavaScript では、プロパティは文字列値による名前または {{jsxref("Symbol")}} とプロパティ記述子で構成されています。プロパティ記述子の型と属性についての詳細情報は、{{jsxref("Object.defineProperty()")}} で確認してください。
プロパティディスクリプタ は、次の属性のいくつかを持ちます。
value
writable
true
である場合、プロパティに関連づけられた値は変更することができます (データ記述子のみ)。get
set
configurable
true
である場合、この種の記述子を変更することや、対応するオブジェクトからプロパティを削除することができます。enumerable
true
である場合、このプロパティは対応するオブジェクトでのプロパティ列挙に現れます。{{jsxref("Object.assign()")}} メソッドは、ソースオブジェクトから対象のオブジェクトに対して enumerable とプロパティのみコピーできる一方、2 つの未知のオブジェクト間の浅いコピーのために、このメソッドと {{jsxref("Object.create()")}} を使用できます:
Object.create( Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj) );
サブクラスを作成する通常の方法は、サブクラスを定義し、そのプロトタイプをスーパークラスのインスタンスに設定し、そのインスタンスにプロパティを定義することです。これは特にセッターやゲッターが無骨になることがあります。代わりに、プロトタイプを設定するためにこのコードを使用することもできます。
function superclass() {} superclass.prototype = { // Define your methods and properties here }; function subclass() {} subclass.prototype = Object.create( superclass.prototype, { // Define your methods and properties here } );
仕様書 |
---|
{{SpecName('ESDraft', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}} |
{{Compat("javascript.builtins.Object.getOwnPropertyDescriptors")}}