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

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

View in English Always switch to English

Object.isExtensible()

Baseline 広く利用可能

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

Object.isExtensible() メソッドは、オブジェクトが拡張可能であるか(新しいプロパティを追加することができるかどうか)を判定します。

目次

試してみましょう

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

構文

js
Object.isExtensible(obj)

引数

obj

チェックするオブジェクトです。

返値

論理値で、与えられたオブジェクトが拡張可能であるかどうかを示します。

解説

オブジェクトは既定では拡張可能です。つまり、新しいプロパティの追加が可能であり、 [[Prototype]] プロパティに再代入することができます。オブジェクトは Object.preventExtensions(), Object.seal(), Object.freeze(), Reflect.preventExtensions() のいずれかを用いる事で拡張不能に設定する事が可能です。

Object.isExtensible の使用

js
// 新規のオブジェクトは拡張可能 const empty = {}; Object.isExtensible(empty); // true // その設定は変える事が可能 Object.preventExtensions(empty); Object.isExtensible(empty); // false // seal メソッドで封印されたオブジェクトは拡張不可と定義される const sealed = Object.seal({}); Object.isExtensible(sealed); // false // freeze メソッドで凍結されたオブジェクトも拡張不可と定義される const frozen = Object.freeze({}); Object.isExtensible(frozen); // false

オブジェクト以外の型強制

ES5 では、このメソッドの引数がオブジェクトではない場合(プリミティブの場合)、 TypeError が発生します。 ES2015 以降では、オブジェクトでない引数は、それが拡張不可能な通常のオブジェクトであるかのように扱われ、単に false を返します。

js
Object.isExtensible(1); // TypeError: 1 is not an object (ES5 code) Object.isExtensible(1); // false (ES2015 code)

仕様書

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

ブラウザーの互換性

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

関連情報