Reflect.isExtensible()

静的な Reflect.isExtensible() メソッドは 、オブジェクトを拡張できるかを測定します (オブジェクトに追加された新しいプロパティを持てるかどうか)。これは Object.isExtensible() に似ていますが、いくつかの違いがあります

試してみましょう

構文

Reflect.isExtensible(target)

引数

target

拡張できるかどうかをチェックする対象のオブジェクト。

返値

対象が拡張可能かどうかを示す Boolean 値。

例外

TypeError: targetObject ではなかった場合。

解説

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

関連情報