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() を使用できます:

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
  }
);

仕様書

仕様書 状態 備考
ECMAScript Latest Draft (ECMA-262)
Object.getOwnPropertyDescriptors の定義
ドラフト ECMAScript 2017 で初回定義。
ECMAScript 2017 (ECMA-262)
Object.getOwnPropertyDescriptors の定義
標準  

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
getOwnPropertyDescriptorsChrome 完全対応 54Edge 完全対応 15Firefox 完全対応 50IE 未対応 なしOpera 完全対応 41Safari 完全対応 10WebView Android 完全対応 54Chrome Android 完全対応 54Firefox Android 完全対応 50Opera Android 完全対応 41Safari iOS 完全対応 10Samsung Internet Android 完全対応 6.0nodejs 完全対応 7.0.0
完全対応 7.0.0
完全対応 6.5.0
無効
無効 From version 6.5.0: this feature is behind the --harmony runtime flag.

凡例

完全対応  
完全対応
未対応  
未対応
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報