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.
"use strict";
const obj = Object.freeze({ name: "Elsa", score: 157 });
delete obj.score; // TypeError
"use strict";
const obj = {};
Object.defineProperty(obj, "foo", { value: 2, configurable: false });
delete obj.foo; // TypeError
"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.
"use strict";
delete Math.PI; // TypeError