【Node.js24.x】Object::defineProperty()メソッドの使い方
definePropertyメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
definePropertyメソッドは、Node.jsの組み込みObjectクラスに属し、オブジェクトに新しいプロパティを追加したり、既存のプロパティの属性を詳細に定義・変更したりするメソッドです。通常のプロパティ代入(obj.prop = value)では設定できない、プロパティの振る舞いを細かく制御するために利用されます。
このメソッドは、プロパティを追加または変更したい対象のオブジェクト、プロパティの名前(文字列またはシンボル)、そしてそのプロパティの属性を定義する「プロパティディスクリプタ」という三つの引数を受け取ります。プロパティディスクリプタには、プロパティの値そのものを示すvalue、値の書き換えを許可するかどうかを示すwritable、for...inループなどで列挙可能かを示すenumerable、プロパティの定義自体を変更したり削除したりできるかを示すconfigurableといった設定が含まれます。
さらに、プロパティへの読み取り・書き込み時に特定の関数を実行させたい場合には、get(プロパティが参照されたときに呼び出される関数)やset(プロパティに値が設定されたときに呼び出される関数)といったアクセサディスクリプタを設定することも可能です。
これにより、オブジェクトの特定のプロパティを読み取り専用にしたり、外部から見えないように隠蔽したり、プロパティにアクセスするたびにカスタムな処理を挟み込んだりするなど、柔軟なプロパティ管理が可能になります。特に、フレームワークやライブラリの内部実装で、オブジェクトの振る舞いを精密に定義するために重要な役割を果たします。このメソッドは、プロパティが定義または変更されたオブジェクト自身を返します。
構文(syntax)
1const myObject = {}; 2Object.defineProperty(myObject, 'newProperty', { 3 value: 42, 4 writable: false, 5 enumerable: true, 6 configurable: false 7});
引数(parameters)
obj, prop, descriptor
- obj: object: プロパティを定義または変更したいオブジェクト
- prop: string | symbol: 定義または変更したいプロパティの名前
- descriptor: object: プロパティの属性を定義するオブジェクト
戻り値(return)
object
Object.definePropertyメソッドは、指定したオブジェクトに新しいプロパティを定義するか、既存のプロパティを再定義します。このメソッドは、変更されたオブジェクト自体を返します。