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 Reflect.deleteProperty() statische Methode ist wie der delete Operator, aber als 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, bei dem die Eigenschaft gelöscht werden soll.
propertyKey-
Der Name der zu löschenden Eigenschaft.
Rückgabewert
Ein Boolean, der anzeigt, ob die Eigenschaft erfolgreich gelöscht wurde oder nicht.
Ausnahmen
TypeError-
Ausgelöst, wenn
targetkein Objekt ist.
Beschreibung
Reflect.deleteProperty() bietet die reflektive Semantik des delete-Operators. Das heißt, Reflect.deleteProperty(target, propertyKey) ist semantisch äquivalent zu:
delete target.propertyKey;
Auf sehr niedrigem Niveau liefert das Löschen einer Eigenschaft einen Boolean zurück (wie im Fall mit dem Proxy-Handler). Reflect.deleteProperty() gibt direkt den Status zurück, während delete einen TypeError im strikten Modus auslösen würde, wenn der Status false ist. Im nicht-strikten Modus verhalten sich delete und Reflect.deleteProperty() gleich.
Reflect.deleteProperty() ruft die [[Delete]] interne Objektmethode des target auf.
Beispiele
>Verwendung von Reflect.deleteProperty()
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> |