JavaScript/Object/defineProperties
< JavaScript | Object
Object.defineProperties()
は、指定されたオブジェクトに1つ以上のプロパティを定義または変更するメソッドです。このメソッドは、指定されたオブジェクトを返します[1]。
構文
編集Object.defineProperties(obj, props)
obj
: プロパティを定義または変更する対象のオブジェクト。props
: 定義または変更するプロパティを記述したオブジェクト。各プロパティは、プロパティディスクリプタ(value
,writable
,enumerable
,configurable
など)を含むオブジェクトです。
例
編集オブジェクトに複数のプロパティを定義するプログラム
編集以下のプログラムは、Object.defineProperties()
を使用してオブジェクトに複数のプロパティを定義します。
const obj = {}; Object.defineProperties(obj, { property1: { value: 42, writable: true }, property2: { value: 'Hello', writable: false, enumerable: true } }); console.log(obj.property1); // 42 console.log(obj.property2); // Hello obj.property1 = 100; console.log(obj.property1); // 100 obj.property2 = 'World'; // エラーは発生しないが、値は変更されない console.log(obj.property2); // Hello
このプログラムでは、Object.defineProperties()
を使用して obj
オブジェクトに property1
と property2
を定義しています。property1
は書き込み可能ですが、property2
は書き込み不可で列挙可能です。
プロパティの属性を指定して定義するプログラム
編集以下のプログラムは、Object.defineProperties()
を使用してプロパティの属性を指定して定義します。
const obj = {}; Object.defineProperties(obj, { property1: { value: 42, writable: false, enumerable: true, configurable: false }, property2: { get: function() { return this._property2; }, set: function(value) { this._property2 = value; }, enumerable: true, configurable: true } }); console.log(obj.property1); // 42 obj.property1 = 100; // エラーは発生しないが、値は変更されない console.log(obj.property1); // 42 obj.property2 = 'Hello'; console.log(obj.property2); // Hello
このプログラムでは、Object.defineProperties()
を使用して obj
オブジェクトに property1
と property2
を定義しています。property1
は書き込み不可で設定不可、property2
はゲッターとセッターを持つプロパティです。
注意点
編集- プロパティディスクリプタ: 各プロパティは、プロパティディスクリプタ(
value
,writable
,enumerable
,configurable
,get
,set
など)を含むオブジェクトで定義されます。 - デフォルト値: プロパティディスクリプタの属性が指定されていない場合、デフォルト値は
false
またはundefined
になります。 - 設定不可プロパティ:
configurable
がfalse
に設定されているプロパティは、後から変更または削除することができません。
脚註
編集- ^ これは、オブジェクトのプロパティを詳細に定義するために使用されます。
外部リンク
編集