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() は、封印されたオブジェクトを返します。

脚註

編集
  1. ^ これは、オブジェクトの構造を固定するために使用されます。

外部リンク

編集