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

Siehe auch