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 オブジェクトに property1property2 を定義しています。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 オブジェクトに property1property2 を定義しています。property1 は書き込み不可で設定不可、property2 はゲッターとセッターを持つプロパティです。

注意点

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

脚註

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

外部リンク

編集