TypeError: Eigenschaft "x" ist nicht konfigurierbar und kann nicht gelöscht werden

Die JavaScript-Ausnahme "property is non-configurable and can't be deleted" tritt auf, wenn versucht wurde, eine Eigenschaft zu löschen, die nicht konfigurierbar ist.

Meldung

TypeError: Cannot delete property 'x' of #<Object> (V8-based)
TypeError: property "x" is non-configurable and can't be deleted (Firefox)
TypeError: Unable to delete property. (Safari)

Fehlertyp

TypeError nur im Strict-Modus.

Was ging schief?

Es wurde versucht, eine Eigenschaft zu löschen, die nicht konfigurierbar ist. Das configurable-Attribut steuert, ob die Eigenschaft aus dem Objekt gelöscht und ob ihre Attribute (außer writable) geändert werden können.

Dieser Fehler tritt nur im Strict-Modus-Code auf. Im Nicht-Strict-Code gibt der Vorgang false zurück.

Beispiele

Versuch, nicht konfigurierbare Eigenschaften zu löschen

Nicht konfigurierbare Eigenschaften sind nicht sehr häufig, aber sie können mit Object.defineProperty() oder Object.freeze() erstellt werden.

js
"use strict";
const obj = Object.freeze({ name: "Elsa", score: 157 });
delete obj.score; // TypeError
js
"use strict";
const obj = {};
Object.defineProperty(obj, "foo", { value: 2, configurable: false });
delete obj.foo; // TypeError
js
"use strict";
const frozenArray = Object.freeze([0, 1, 2]);
frozenArray.pop(); // TypeError

Es gibt auch einige eingebaute nicht konfigurierbare Eigenschaften in JavaScript. Vielleicht haben Sie versucht, eine mathematische Konstante zu löschen.

js
"use strict";
delete Math.PI; // TypeError

Siehe auch