Reflect.isExtensible()
静的な Reflect.isExtensible() メソッドは 、オブジェクトを拡張できるかを測定します (オブジェクトに追加された新しいプロパティを持てるかどうか)。これは Object.isExtensible() に似ていますが、いくつかの違いがあります。
試してみましょう
構文
Reflect.isExtensible(target)
引数
target-
拡張できるかどうかをチェックする対象のオブジェクト。
返値
対象が拡張可能かどうかを示す Boolean 値。
例外
解説
Reflect.isExtensible メソッドは 、オブジェクトを拡張できるかを測定します(オブジェクトに追加された新しいプロパティを持てるかどうか)。これは Object.isExtensible() と同じメソッドです。
例
Reflect.isExtensible() の使用
Object.isExtensible() も見てください。
js
// 今オブジェクトは拡張可能。
let empty = {}
Reflect.isExtensible(empty) // === true
// ...しかし、変更できます
Reflect.preventExtensions(empty)
Reflect.isExtensible(empty) // === false
// シールドオブジェクトは拡張できないように定義される。
let sealed = Object.seal({})
Reflect.isExtensible(sealed) // === false
// フローズンオブジェクトも拡張できないように定義される。
let frozen = Object.freeze({})
Reflect.isExtensible(frozen) // === false
Object.isExtensible() との違い
このメソッドへの最初の引数がオブジェクトではなかった (プリミティブであった) 場合、これは TypeError を引き起こします。Object.isExtensible() だと、オブジェクトではない最初の引数はオブジェクトに強制的に変換されます。
js
Reflect.isExtensible(1)
// TypeError: 1 はオブジェクトではない
Object.isExtensible(1)
// false
仕様書
| Specification |
|---|
| ECMAScript Language Specification # sec-reflect.isextensible |
ブラウザーの互換性
BCD tables only load in the browser