【JSリファレンス】Object.getOwnPropertyDescriptors()

更新日:2024/06/14

初出:ECMAScript2017


Object.getOwnPropertyDescriptors()Objectコンストラクターのメソッドです。
オブジェクトが所有するプロパティのプロパティ記述子を、一括で取得します。

プロパティ記述子については、Object.defineProperty()を参照してください。

対象となるプロパティは、オブジェクトが直接所有するプロパティです。
プロトタイプ上のプロパティは対象外です。

 

■構文

Object.getOwnPropertyDescriptors ( O )
  1. O: 対象オブジェクト

    オブジェクト以外の値はオブジェクトに変換される

プロパティにプロパティ名、値にプロパティ記述子をセットしたオブジェクト。
Object.defineProperties()の第二引数と同じ形式

 

■使用例

const s = Symbol();
const obj = {
  prop:200,
  text:"hello",
  [s]:300
}

console.log( Object.getOwnPropertyDescriptors( obj ) );
  // {
  //   prop: { value: 200, writable: true, enumerable: true, configurable: true },     
  //   text: {
  //     value: 'hello',
  //     writable: true,
  //     enumerable: true,
  //     configurable: true
  //   },
  //   [Symbol()]: { value: 300, writable: true, enumerable: true, configurable: true }
  // }

プロパティ記述子を使用したオブジェクト複製

const obj = {
  _value:200,
  set value(v){ this._value = v; },
  get value(){ return this._value *2; }
}

const propertyDescriptors = Object.getOwnPropertyDescriptors( obj );
const obj2 =  Object.defineProperties( {} ,propertyDescriptors );

console.log( obj2 ); // { _value: 200, value: [Getter/Setter] }
                
obj2.value = 1000;
console.log( obj2.value );  // 2000

 

関連ページ

更新日:2024/06/14

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。