Object.getOwnPropertyDescriptors()
Object.getOwnPropertyDescriptors()
メソッドは、指定したオブジェクトのすべてのプロパティ記述子を返します。
試してみましょう
構文
Object.getOwnPropertyDescriptors(obj)
引数
obj
-
すべてのプロパティディスクリプタを取得するオブジェクト。
返値
オブジェクトのすべてのプロパティ記述子を含むオブジェクト。プロパティがない場合、空オブジェクトの可能性がある。
説明
このメソッドは、オブジェクトのすべての独自のプロパティの正確な記述の検査を可能にします。 JavaScript では、プロパティは文字列値による名前または Symbol
とプロパティ記述子で構成されています。プロパティ記述子の型と属性についての詳細情報は、Object.defineProperty()
で確認してください。
プロパティディスクリプタ は、次の属性のいくつかを持ちます。
value
-
プロパティに関連づけられた値です (データディスクリプタのみ)。
writable
-
true
である場合、プロパティに関連づけられた値は変更することができます (データ記述子のみ)。 get
-
プロパティのゲッターとして提供する関数、あるいはゲッターがない場合は
undefined
です (アクセサ記述子のみ)。 set
-
プロパティのセッターとして提供する関数、あるいはセッターがない場合は
undefined
です (アクセサ記述子のみ)。 configurable
-
true
である場合、この種の記述子を変更することや、対応するオブジェクトからプロパティを削除することができます。 enumerable
-
true
である場合、このプロパティは対応するオブジェクトでのプロパティ列挙に現れます。
例
浅いコピーの生成
Object.assign()
メソッドは、ソースオブジェクトから対象のオブジェクトに対して enumerable とプロパティのみコピーできる一方、2 つの未知のオブジェクト間の浅いコピーのために、このメソッドと Object.create()
を使用できます:
js
Object.create(
Object.getPrototypeOf(obj),
Object.getOwnPropertyDescriptors(obj),
);
サブクラスの作成
サブクラスを作成する通常の方法は、サブクラスを定義し、そのプロトタイプをスーパークラスのインスタンスに設定し、そのインスタンスにプロパティを定義することです。これは特にセッターやゲッターが無骨になることがあります。代わりに、プロトタイプを設定するためにこのコードを使用することもできます。
js
function superclass() {}
superclass.prototype = {
// Define your methods and properties here
};
function subclass() {}
subclass.prototype = Object.create(superclass.prototype, {
// Define your methods and properties here
});
仕様書
Specification |
---|
ECMAScript Language Specification # sec-object.getownpropertydescriptors |
ブラウザーの互換性
BCD tables only load in the browser