Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 ermittelt, 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

js
Reflect.isExtensible(target)

Parameter

target

Das Zielobjekt, für das geprüft werden soll, ob es erweiterbar ist.

Rückgabewert

Ein Boolean-Wert, der angibt, ob das Zielobjekt erweiterbar ist.

Ausnahmen

TypeError

Wird ausgelöst, wenn target kein Objekt ist.

Beschreibung

Reflect.isExtensible() bietet die reflektierende Semantik zur Prüfung, ob ein Objekt erweiterbar ist. Der einzige Unterschied zu Object.isExtensible() besteht darin, wie Nicht-Objekte als Zielwerte behandelt werden. Reflect.isExtensible() löst einen TypeError aus, wenn der Zielwert kein Objekt ist, während Object.isExtensible() für Nicht-Objekte immer false zurückgibt.

Reflect.isExtensible() ruft die interne Objektmethode [[IsExtensible]] von target auf.

Beispiele

Reflect.isExtensible() verwenden

Siehe auch Object.isExtensible().

js
// 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 Argument target dieser Methode kein Objekt ist (sondern ein primitiver Wert), wird ein TypeError ausgelöst. Bei Object.isExtensible() gibt ein target, das kein Objekt ist, ohne Fehler false zurück.

js
Reflect.isExtensible(1);
// TypeError: 1 is not an object

Object.isExtensible(1);
// false

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-reflect.isextensible

Browser-Kompatibilität

Siehe auch