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 (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.

凡例

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

関連情報