Reflect.deleteProperty()
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.deleteProperty() ähnelt dem Operator delete, ist jedoch eine Funktion. Sie löscht eine Eigenschaft aus einem Objekt.
Probieren Sie es aus
const object = {
foo: 42,
};
Reflect.deleteProperty(object, "foo");
console.log(object.foo);
// Expected output: undefined
const array = [1, 2, 3, 4, 5];
Reflect.deleteProperty(array, "3");
console.log(array);
// Expected output: Array [1, 2, 3, <1 empty slot>, 5]
Syntax
Reflect.deleteProperty(target, propertyKey)
Parameter
target-
Das Zielobjekt, aus dem die Eigenschaft gelöscht werden soll.
propertyKey-
Der Name der zu löschenden Eigenschaft.
Rückgabewert
Ein boolescher Wert, der angibt, ob die Eigenschaft erfolgreich gelöscht wurde.
Ausnahmen
TypeError-
Wird ausgelöst, wenn
targetkein Objekt ist.
Beschreibung
Reflect.deleteProperty() stellt die reflektive Semantik des Operators delete bereit. Das heißt, Reflect.deleteProperty(target, propertyKey) ist semantisch äquivalent zu:
delete target.propertyKey;
Auf der untersten Ebene gibt das Löschen einer Eigenschaft einen booleschen Wert zurück (wie auch beim Proxy-Handler). Reflect.deleteProperty() gibt diesen Wert direkt zurück, während delete im Strict Mode einen TypeError auslöst, wenn der Wert false ist. Außerhalb des Strict Mode verhalten sich delete und Reflect.deleteProperty() gleich.
Reflect.deleteProperty() ruft die objektinterne Methode [[Delete]] von target auf.
Beispiele
>Reflect.deleteProperty() verwenden
const obj = { x: 1, y: 2 };
Reflect.deleteProperty(obj, "x"); // true
console.log(obj); // { y: 2 }
const arr = [1, 2, 3, 4, 5];
Reflect.deleteProperty(arr, "3"); // true
console.log(arr); // [1, 2, 3, <1 empty slot>, 5]
// Returns true if no such property exists
Reflect.deleteProperty({}, "foo"); // true
// Returns false if a property is unconfigurable
Reflect.deleteProperty(Object.freeze({ foo: 1 }), "foo"); // false
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-reflect.deleteproperty> |