Object.freeze() は、指定されたオブジェクトを凍結するメソッドです。凍結されたオブジェクトは、プロパティの追加、削除、変更ができなくなります[1]

構文

編集
Object.freeze(obj)
  • obj: 凍結する対象のオブジェクト。

オブジェクトを凍結するプログラム

編集

以下のプログラムは、Object.freeze() を使用してオブジェクトを凍結します。

const obj = {
  a: 1,
  b: 2
};

Object.freeze(obj);

obj.a = 100; // エラーは発生しないが、値は変更されない
console.log(obj.a); // 1

obj.c = 3; // エラーは発生しないが、プロパティは追加されない
console.log(obj.c); // undefined

delete obj.b; // エラーは発生しないが、プロパティは削除されない
console.log(obj.b); // 2

このプログラムでは、Object.freeze() を使用して obj オブジェクトを凍結しています。凍結されたオブジェクトは、プロパティの変更、追加、削除ができなくなります。

ネストされたオブジェクトの凍結

編集

以下のプログラムは、Object.freeze() を使用してネストされたオブジェクトを凍結します。

const obj = {
  a: 1,
  b: {
    c: 2
  }
};

Object.freeze(obj);

obj.b.c = 100; // ネストされたオブジェクトは凍結されない
console.log(obj.b.c); // 100

このプログラムでは、Object.freeze() を使用して obj オブジェクトを凍結していますが、ネストされたオブジェクト b は凍結されません。ネストされたオブジェクトを凍結するには、再帰的に Object.freeze() を適用する必要があります。

注意点

編集
  • 浅い凍結: Object.freeze() は、指定されたオブジェクトを浅く凍結します。つまり、ネストされたオブジェクトは凍結されません。
  • 厳格モード: 厳格モードでは、凍結されたオブジェクトのプロパティを変更しようとするとエラーが発生します。
  • 戻り値: Object.freeze() は、凍結されたオブジェクトを返します。

脚註

編集
  1. ^ これは、オブジェクトを不変にするために使用されます。

外部リンク

編集