← 返回首页
Reflect.isExtensible() - JavaScript | MDN

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Reflect.isExtensible()

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2016年9月以降、すべてのブラウザーで利用可能です。

Reflect.isExtensible() は静的メソッドで、これは Object.isExtensible() に似ています。これはオブジェクトが拡張可能であるか(オブジェクトに追加された新しいプロパティを持てるかどうか)を判断します。

目次

試してみましょう

const object1 = {}; console.log(Reflect.isExtensible(object1)); // 予想される結果: true Reflect.preventExtensions(object1); console.log(Reflect.isExtensible(object1)); // 予想される結果: false const object2 = Object.seal({}); console.log(Reflect.isExtensible(object2)); // 予想される結果: false

構文

js
Reflect.isExtensible(target)

引数

target

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

返値

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

例外

TypeError

target がオブジェクトではない場合に発生します。

解説

Reflect.isExtensible() は、オブジェクトが拡張可能かどうかを調べる反射的な意味づけを提供します。Object.isExtensible() との唯一の違いは、オブジェクト以外の対象の処理方法です。Reflect.isExtensible() は対象がオブジェクトでない場合に TypeError を発生しますが、Object.isExtensible() はオブジェクト以外の対象に対して常に false を返します。

Reflect.isExtensible() は、target の [[IsExtensible]] オブジェクト内部メソッド を呼び出します。

Reflect.isExtensible() の使用

Object.isExtensible() も参照してください。

js
// 新しいオブジェクトは拡張可能。 const empty = {}; Reflect.isExtensible(empty); // true // ...しかし、変更できます Reflect.preventExtensions(empty); Reflect.isExtensible(empty); // false // 封印されたオブジェクトは拡張できないように定義される。 const sealed = Object.seal({}); Reflect.isExtensible(sealed); // false // 凍結されたオブジェクトも拡張できないように定義される。 const frozen = Object.freeze({}); Reflect.isExtensible(frozen); // false

Object.isExtensible() との違い

このメソッドへの最初の引数がオブジェクトではなかった (プリミティブであった) 場合、これは TypeError を引き起こします。Object.isExtensible() だと、オブジェクトではない最初の引数はオブジェクトに強制的に変換されます。

js
Reflect.isExtensible(1); // TypeError: 1 はオブジェクトではない Object.isExtensible(1); // false

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-reflect.isextensible

ブラウザーの互換性

ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。

関連情報