このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
Object.isExtensible()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
Object.isExtensible() メソッドは、オブジェクトが拡張可能であるか(新しいプロパティを追加することができるかどうか)を判定します。
In this article
試してみましょう
const object = {};console.log(Object.isExtensible(object));// 予想される結果: trueObject.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)仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-object.isextensible> |