Object.defineProperty() は、指定されたオブジェクトに1つのプロパティを定義または変更するメソッドです。このメソッドは、指定されたオブジェクトを返します[1]

構文

編集
Object.defineProperty(obj, prop, descriptor)
  • obj: プロパティを定義または変更する対象のオブジェクト。
  • prop: 定義または変更するプロパティの名前(文字列またはシンボル)。
  • descriptor: プロパティの属性を記述したオブジェクト(value, writable, enumerable, configurable, get, set など)。

オブジェクトにプロパティを定義するプログラム

編集

以下のプログラムは、Object.defineProperty() を使用してオブジェクトにプロパティを定義します。

const obj = {};

Object.defineProperty(obj, 'property1', {
  value: 42,
  writable: true,
  enumerable: true,
  configurable: true
});

console.log(obj.property1); // 42

obj.property1 = 100;
console.log(obj.property1); // 100

このプログラムでは、Object.defineProperty() を使用して obj オブジェクトに property1 を定義しています。property1 は書き込み可能で列挙可能、設定可能です。

ゲッターとセッターを定義するプログラム

編集

以下のプログラムは、Object.defineProperty() を使用してゲッターとセッターを定義します。

const obj = {};

Object.defineProperty(obj, 'property1', {
  get: function() {
    return this._property1;
  },
  set: function(value) {
    this._property1 = value;
  },
  enumerable: true,
  configurable: true
});

obj.property1 = 'Hello';
console.log(obj.property1); // Hello

このプログラムでは、Object.defineProperty() を使用して obj オブジェクトに property1 を定義しています。property1 はゲッターとセッターを持つプロパティです。

注意点

編集
  • プロパティディスクリプタ: プロパティの属性は、プロパティディスクリプタ(value, writable, enumerable, configurable, get, set など)を含むオブジェクトで定義されます。
  • デフォルト値: プロパティディスクリプタの属性が指定されていない場合、デフォルト値は false または undefined になります。
  • 設定不可プロパティ: configurablefalse に設定されているプロパティは、後から変更または削除することができません。

脚註

編集
  1. ^ これは、オブジェクトのプロパティを詳細に定義するために使用されます。

外部リンク

編集