.isExtensible()

オブジェクトが拡張可能であるかを調べます。(新しいプロパティを追加できるか否か)

文法

Object.isExtensible(obj)
引数 説明
obj 調べる対象のオブジェクトを指定します。

オブジェクトはデフォルトで拡張可能(extensible)となっており、新しいプロパティの追加と編集を行うことが出来ます。 (__proto__(非推奨)をサポートするエンジンでは、その__proto__プロパティで) Object.preventExtensionsObject.sealObject.freezeを使用して、拡張不可として印付けることが出来ます。

// 新規のオブジェクトは拡張可能
var empty = {};
assert(Object.isExtensible(empty) === true);

// ...ただし、これは変更することが出来ます。
Object.preventExtensions(empty);
assert(Object.isExtensible(empty) === false);

// seleされたオブジェクトは、拡張不可が定義されます。
var sealed = Object.seal({});
assert(Object.isExtensible(sealed) === false);

// 凍結(frozen)されたオブジェクトもまた、
// 拡張不可が定義されます。
var frozen = Object.freeze({});
assert(Object.isExtensible(frozen) === false);

ES5では、もしこのメソッドへの引数がオブジェクト(プリミティブ)で無ければ、 TypeErrorが発生します。 ES6では、オブジェクトでは無い引数は、拡張不可のオブジェクトのように扱われ、 単純にfalseが返されます。

>Object.isExtensible(1)
TypeError: 1 is not an object // ES5 code

>Object.isExtensible(1)
false                         // ES6 code

仕様

ブラウザ互換性

デスクトップ
機能 Chrome Firefox
(Gecko)
IE Opera Safari
基本 6 4.0 (2.0) 9 12 5.1
モバイル
機能 Android Firefox
Mobile
IE
Mobile
Opera
Mobile
Safari
Mobile
基本 ? ? ? ? ?

Based on Kangax's compat table.

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。