TypeError: property "x" is non-configurable and can't be deleted
Die JavaScript-Ausnahme "property is non-configurable and can't be deleted" tritt auf, wenn versucht wurde, eine Eigenschaft zu löschen, diese Eigenschaft jedoch 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 Mode.
Was ist schiefgelaufen?
Es wurde versucht, eine Eigenschaft zu löschen, diese Eigenschaft ist jedoch nicht konfigurierbar. Das
configurable-Attribut steuert, ob die Eigenschaft aus dem Objekt gelöscht werden kann und ob ihre Attribute (außer writable) geändert werden können.
Dieser Fehler tritt nur in Strict Mode-Code auf. In
nicht-striktem Code gibt die Operation false zurück.
Beispiele
Versuch, nicht konfigurierbare Eigenschaften zu löschen
Nicht konfigurierbare Eigenschaften sind nicht sehr häufig, aber sie können erstellt werden mit
Object.defineProperty() oder Object.freeze().
"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 nicht konfigurierbare Eigenschaften, die in JavaScript eingebaut sind. Vielleicht haben Sie versucht, eine mathematische Konstante zu löschen.
"use strict";
delete Math.PI; // TypeError