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()
メソッドは、ソースオブジェクトから対象のオブジェクトに対して列挙可能かつ自身のプロパティのみコピーできる一方、2 つの未知のオブジェクト間のシャローコピーのために、このメソッドと Object.create()
を使用できます。
Object.create(
Object.getPrototypeOf(obj),
Object.getOwnPropertyDescriptors(obj),
);
サブクラスの作成
サブクラスを作成する通常の方法は、サブクラスを定義し、そのプロトタイプをスーパークラスのインスタンスに設定し、そのインスタンスにプロパティを定義することです。これは特にセッターやゲッターが無骨になることがあります。代わりに、プロトタイプを設定するためにこのコードを使用することもできます。
function superclass() {}
superclass.prototype = {
// ここで superclass のコンストラクター、メソッド、プロパティを定義
};
function subclass() {}
subclass.prototype = Object.create(superclass.prototype, {
// ここで subclass のコンストラクター、メソッド、プロパティを定義
});
仕様書
Specification |
---|
ECMAScript Language Specification # sec-object.getownpropertydescriptors |
ブラウザーの互換性
BCD tables only load in the browser