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()
(en-US) eingesetzt wird, ist die Eigenschaft nicht ohne weiteres konfigurierbar.
Beispiele
Nicht konfigurierbare Eigenschaften mit Object.defineProperty
erstellen
Die Object.defineProperty()
(en-US) 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});