TypeError: can't redefine non-configurable property "x"

Fehlermeldung

TypeError: can't redefine non-configurable property "x" (Firefox)
TypeError: Cannot redefine property: "x" (Chrome)

Fehlertyp

Was ist falsch gelaufen?

Es wurde versucht eine Eigenschaft erneut zu definieren, aber die Eigenschaft ist nicht konfigurierbar (non-configurable). Das configurable Attribut kontrolliert, ob eine Eigenschaft von einem Objekt gel├Âscht werden kann und seine Attribute (anders als writable) ge├Ąndert werden k├Ânnen. Eigenschaften von einem Objekt, dass von einem Objekt-Initialisierer erstellt wurden, sind konfigurierbar. Immer, wenn zum Beispiel Object.defineProperty() eingesetzt wird, ist die Eigenschaft nicht ohne weiteres konfigurierbar.

Beispiele

Nicht konfigurierbare Eigenschaften mit Object.defineProperty erstellen

Die Object.defineProperty() Funktion erstellt nicht konfiguriertbare Eigenschaften wenn sie nicht extra als konfigurierbar spezifiziert sind.

var obj = Object.create({});
Object.defineProperty(obj, "foo", {value: "bar"});

Object.defineProperty(obj, "foo", {value: "baz"});
// TypeError: can't redefine non-configurable property "foo"

Die "foo" Eigenschaft muss als Konfigurierbar eingestellt werden, wenn diese sp├Ąter im Quelltext erneut definiert bzw. ├╝berschrieben werden soll.

var obj = Object.create({});
Object.defineProperty(obj, "foo", {value: "bar", configurable: true});
Object.defineProperty(obj, "foo", {value: "baz", configurable: true});

Siehe auch