TypeError: property "x" is non-configurable and can't be deleted
Fehlermeldung
TypeError: property "x" is non-configurable and can't be deleted. (Firefox) TypeError: Cannot delete property 'x' of #<Object> (Chrome)
Fehlertyp
TypeError
nur im strict mode.
Was ist falsch gelaufen?
Es wurde versucht eine EIgenschaft zu löschen, obwohl die Eigenschaft nicht Konfigurierbar (non-configurable) ist. Das configurable
Attribut gibt an, ob ein Eigenschaft von einem Objekt gelöscht werden kann und ob ein Attribut (anders als writable
) geändert werden kann.
Dieser Fehler ist nur tritt nur im strict mode auf. In non-strict Quelltext, gibt die Operation false
zurück.
Beispiele
Nicht Konfigurierbare Eigenschaften sind nicht sehr häufig, aber sie können mit Object.defineProperty()
oder Object.freeze()
erstellt werden.
'use strict';
var obj = Object.freeze({name: 'Elsa', score: 157});
delete obj.score; // TypeError
'use strict';
var obj = {};
Object.defineProperty(obj, 'foo', {value: 2, configurable: false});
delete obj.foo; // TypeError
'use strict';
var frozenArray = Object.freeze([0, 1, 2]);
frozenArray.pop(); // TypeError
Es gibt auch einige nicht Konfigurierbare Eigenschaften, die in JavaScript eingebaut sind. Dazu zählen zum Beispiel die mathematischen Konstanten.
'use strict';
delete Math.PI; // TypeError