Reflect.isExtensible()
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2016 browserübergreifend verfügbar.
Die statische Methode Reflect.isExtensible() ähnelt Object.isExtensible(). Sie bestimmt, ob ein Objekt erweiterbar ist (ob ihm neue Eigenschaften hinzugefügt werden können).
Probieren Sie es aus
const object1 = {};
console.log(Reflect.isExtensible(object1));
// Expected output: true
Reflect.preventExtensions(object1);
console.log(Reflect.isExtensible(object1));
// Expected output: false
const object2 = Object.seal({});
console.log(Reflect.isExtensible(object2));
// Expected output: false
Syntax
Reflect.isExtensible(target)
Parameter
target-
Das Zielobjekt, dessen Erweiterbarkeit geprüft werden soll.
Rückgabewert
Ein Boolean, der angibt, ob das Ziel erweiterbar ist oder nicht.
Ausnahmen
TypeError-
Wird ausgelöst, wenn
targetkein Objekt ist.
Beschreibung
Reflect.isExtensible() bietet die reflektierende Semantik zur Überprüfung, ob ein Objekt erweiterbar ist. Der einzige Unterschied zu Object.isExtensible() besteht darin, wie nicht-objekthafte Ziele behandelt werden. Reflect.isExtensible() löst einen TypeError aus, wenn das Ziel kein Objekt ist, während Object.isExtensible() immer false für nicht-objekthafte Ziele zurückgibt.
Reflect.isExtensible() ruft die [[IsExtensible]] interne Objektmethode des target auf.
Beispiele
>Verwendung von Reflect.isExtensible()
Siehe auch Object.isExtensible().
// New objects are extensible.
const empty = {};
Reflect.isExtensible(empty); // true
// … but that can be changed.
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // false
// Sealed objects are by definition non-extensible.
const sealed = Object.seal({});
Reflect.isExtensible(sealed); // false
// Frozen objects are also by definition non-extensible.
const frozen = Object.freeze({});
Reflect.isExtensible(frozen); // false
Unterschied zu Object.isExtensible()
Wenn das target Argument dieser Methode kein Objekt ist (ein primitives), wird dies einen TypeError verursachen. Mit Object.isExtensible() wird ein nicht-objekthaftes target ohne Fehler false zurückgeben.
Reflect.isExtensible(1);
// TypeError: 1 is not an object
Object.isExtensible(1);
// false
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2026 Language Specification> # sec-reflect.isextensible> |