JavaScript/Object/preventExtensions
< JavaScript | Object
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()
を使用してその状態を確認しています。
注意点
編集- 既存のプロパティ: 既存のプロパティの変更や削除は可能です。
- 不可逆的: 一度拡張不可能にしたオブジェクトを、再び拡張可能にすることはできません。
- プロトタイプ: プロトタイプチェーンの変更も防止されます。
- 非オブジェクト: 非オブジェクト(例:
null
やundefined
)を指定すると、TypeError
が発生します。
脚註
編集- ^ これは、オブジェクトを拡張不可能な状態にするために使用されます。
外部リンク
編集