JavaScript/Object/seal
< JavaScript | Object
Object.seal()
は、指定されたオブジェクトを封印するメソッドです。封印されたオブジェクトは、プロパティの追加や削除ができなくなりますが、既存のプロパティの値は変更可能です[1]。
構文
編集Object.seal(obj)
obj
: 封印する対象のオブジェクト。
例
編集オブジェクトを封印するプログラム
編集以下のプログラムは、Object.seal()
を使用してオブジェクトを封印します。
const obj = { a: 1, b: 2 }; Object.seal(obj); obj.a = 100; // プロパティの値は変更可能 console.log(obj.a); // 100 obj.c = 3; // エラーは発生しないが、プロパティは追加されない console.log(obj.c); // undefined delete obj.b; // エラーは発生しないが、プロパティは削除されない console.log(obj.b); // 2
このプログラムでは、Object.seal()
を使用して obj
オブジェクトを封印しています。封印されたオブジェクトは、プロパティの追加や削除ができなくなりますが、既存のプロパティの値は変更可能です。
ネストされたオブジェクトの封印
編集以下のプログラムは、Object.seal()
を使用してネストされたオブジェクトを封印します。
const obj = { a: 1, b: { c: 2 } }; Object.seal(obj); obj.b.c = 100; // ネストされたオブジェクトは封印されない console.log(obj.b.c); // 100
このプログラムでは、Object.seal()
を使用して obj
オブジェクトを封印していますが、ネストされたオブジェクト b
は封印されません。ネストされたオブジェクトを封印するには、再帰的に Object.seal()
を適用する必要があります。
注意点
編集- 浅い封印:
Object.seal()
は、指定されたオブジェクトを浅く封印します。つまり、ネストされたオブジェクトは封印されません。 - 厳格モード: 厳格モードでは、封印されたオブジェクトのプロパティを追加または削除しようとするとエラーが発生します。
- 戻り値:
Object.seal()
は、封印されたオブジェクトを返します。
脚註
編集- ^ これは、オブジェクトの構造を固定するために使用されます。
外部リンク
編集