【JavaScript ECMAScript】Object::Object.defineProperties静的メソッドの使い方
Object.defineProperties()静的メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Object.defineProperties()メソッドは、指定されたオブジェクトに一つ以上のプロパティを一度に定義したり、既存のプロパティの属性を変更したりするメソッドです。このメソッドを使用することで、プロパティの値だけでなく、そのプロパティが書き込み可能であるか、列挙可能であるか、再設定可能であるかといった詳細な振る舞いを細かく制御することができます。
具体的には、第一引数に対象となるオブジェクトを、第二引数には定義または変更したいプロパティの名前とその属性を記述したオブジェクトを渡します。この属性を記述したオブジェクトは「プロパティディスクリプタ」と呼ばれ、value(プロパティの初期値)、writable(値の変更可否)、enumerable(for...inループなどで列挙可能か)、configurable(プロパティの属性変更や削除可否)などの設定を含めることができます。また、値を直接設定する代わりに、get(プロパティが参照されたときに実行される関数)やset(プロパティに値が割り当てられたときに実行される関数)といったアクセサ関数を定義することも可能です。
通常のプロパティ割り当て(例:object.property = value)では設定できない、より厳密なオブジェクトの制御や、読み取り専用のプロパティ、列挙されないプロパティなどを定義する際に非常に役立ちます。複数のプロパティを一括で設定できるため、コードの可読性を高め、効率的なオブジェクトの初期化や更新を行うことができます。このメソッドは、引数で渡されたオブジェクト自体を変更し、その変更されたオブジェクトを返します。
構文(syntax)
1const obj = {}; 2Object.defineProperties(obj, { 3 propertyA: { 4 value: 10, 5 writable: true, 6 enumerable: true, 7 configurable: true 8 }, 9 propertyB: { 10 value: 'text', 11 writable: false, 12 enumerable: false, 13 configurable: false 14 } 15});
引数(parameters)
obj, props
- obj: object: プロパティを定義または変更する対象のオブジェクト
- props: object: 定義するプロパティおよびそれらの特性を指定するオブジェクト
戻り値(return)
Object
Object.defineProperties()メソッドは、対象となるオブジェクトそのものを返します。これは、メソッドの実行後も元のオブジェクトに対して操作を続けられるようにするためです。