Die Methode Object.isExtensible()
bestimmt, ob ein Objekt erweiterbar ist. Das heißt, es können dem Objekt neue Eigenschaften hinzugefügt werden.
Syntax
Object.isExtensible(obj)
Parameter
obj
- Das Objekt, das überprüft werden soll.
Rückgabewert
Ein Boolean
, der angibt, ob das übergebene Objekt erweiterbar ist.
Beschreibung
Standardmäßig sind Objekte erweiterbar: Es ist möglich, ihnen neue Eigenschaften zuzuweisen und sie dadurch zu verändern. In Engines, die __proto__
unterstützen, kann auch deren __proto__ Eigenschaft geändert werden. Ein Objekt kann mittels Object.preventExtensions()
, Object.seal()
oder Object.freeze()
explizit als nicht-erweiterbar markiert werden.
Beispiele
// Neue Objekte sind erweiterbar.
var empty = {};
Object.isExtensible(empty); // === true
// ...aber das kann sich ändern.
Object.preventExtensions(empty);
Object.isExtensible(empty); // === false
// Versiegelte Objekte sind per Definition nicht erweiterbar.
var sealed = Object.seal({});
Object.isExtensible(sealed); // === false
// Eingefrorene Objekte sind ebenfalls per Definition nicht erweiterbar.
var frozen = Object.freeze({});
Object.isExtensible(frozen); // === false
Anmerkungen
In ES5 muss das Argument der Methode ein echtes Objekt sein. Ist dies nicht der Fall, wird ein TypeError
geworfen. In ES2015 hingegen wird ein Nicht-Objekt einfach als nicht-erweiterbares Objekt behandelt, sodass von der Methode false
zurückgegeben wird.
Object.isExtensible(1);
// TypeError: 1 is not an object (ES5 code)
Object.isExtensible(1);
// false (ES2015 code)
Spezifikationen
Specification | Status | Comment |
---|---|---|
ECMAScript 5.1 (ECMA-262) Die Definition von 'Object.isExtensible' in dieser Spezifikation. |
Standard | Initial definition. Implemented in JavaScript 1.8.5. |
ECMAScript 2015 (6th Edition, ECMA-262) Die Definition von 'Object.isExtensible' in dieser Spezifikation. |
Standard | |
ECMAScript Latest Draft (ECMA-262) Die Definition von 'Object.isExtensible' in dieser Spezifikation. |
Entwurf |
Browser-Kompatibilität
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 6 | 4.0 (2.0) | 9 | 12 | 5.1 |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | ? | ? | ? | ? | ? | ? |