概要
オブジェクトが拡張可能であるかどうか(新しいプロパティを追加する事が出来るか否か)を決定します。
構文
Object.isExtensible(obj)
引数
- obj
- チェックするオブジェクト
説明
オブジェクトはデフォルトでは拡張可能、つまり、新しいプロパティの追加が可能であり、(__proto__ のプロパティ __proto__ がサポートされたエンジンでは)変更することができます。オブジェクトは Object.preventExtensions 、 Object.seal 、 Object.freeze の何れかを用いる事で拡張不能に設定する事が可能です。
例
// 新規のオブジェクトは拡張可能
var empty = {};
assert(Object.isExtensible(empty) === true);
// その設定は変える事が可能
Object.preventExtensions(empty);
assert(Object.isExtensible(empty) === false);
// seal メソッドで封印されたオブジェクトは拡張不可と定義される
var sealed = Object.seal({});
assert(Object.isExtensible(sealed) === false);
// freeze メソッドで凍結されたオブジェクトも拡張不可と定義される
var frozen = Object.freeze({});
assert(Object.isExtensible(frozen) === false);
ブラウザ実装状況
| 機能 | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | 4 (2.0) | 6 | 9 | 12 | 5.1 |
| 機能 | Firefox Mobile (Gecko) | Android | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| 基本サポート | ? | ? | ? | ? | ? |
※ Kangax's compat table に基づく。