JavaScript/Object/freeze
< JavaScript | Object
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()
は、凍結されたオブジェクトを返します。
脚註
編集- ^ これは、オブジェクトを不変にするために使用されます。
外部リンク
編集