Object.preventExtensions() は、指定されたオブジェクトを拡張不可能にするメソッドです。このメソッドは、オブジェクトに新しいプロパティが追加されることを防ぎます[1]

構文

編集
Object.preventExtensions(obj)
  • obj: 拡張不可能にする対象のオブジェクト。

オブジェクトを拡張不可能にするプログラム

編集

以下のプログラムは、Object.preventExtensions() を使用してオブジェクトを拡張不可能にします。

const obj = { prop: 42 };
Object.preventExtensions(obj);

// 新しいプロパティの追加を試みる
obj.newProp = 'value';
console.log(obj.newProp); // undefined

// 既存のプロパティは変更可能
obj.prop = 100;
console.log(obj.prop); // 100

このプログラムでは、Object.preventExtensions() を使用して obj オブジェクトを拡張不可能にしています。新しいプロパティの追加は失敗しますが、既存のプロパティは変更可能です。

拡張不可能なオブジェクトの状態を確認するプログラム

編集

以下のプログラムは、拡張不可能にしたオブジェクトの状態を確認します。

const obj = { prop: 42 };
console.log(Object.isExtensible(obj)); // true
Object.preventExtensions(obj);
console.log(Object.isExtensible(obj)); // false

このプログラムでは、Object.preventExtensions() を使用してオブジェクトを拡張不可能にした後、Object.isExtensible() を使用してその状態を確認しています。

注意点

編集
  • 既存のプロパティ: 既存のプロパティの変更や削除は可能です。
  • 不可逆的: 一度拡張不可能にしたオブジェクトを、再び拡張可能にすることはできません。
  • プロトタイプ: プロトタイプチェーンの変更も防止されます。
  • 非オブジェクト: 非オブジェクト(例: nullundefined)を指定すると、TypeError が発生します。

脚註

編集
  1. ^ これは、オブジェクトを拡張不可能な状態にするために使用されます。

外部リンク

編集