TypeError: kann die nicht konfigurierbare Eigenschaft "x" nicht neu definieren
Der JavaScript-Ausnahmefehler "kann die nicht konfigurierbare Eigenschaft nicht neu definieren" tritt auf, wenn versucht wurde, eine Eigenschaft neu zu definieren, die nicht konfigurierbar ist.
Meldung
TypeError: Cannot redefine property: "x" (V8-based) TypeError: can't redefine non-configurable property "x" (Firefox) TypeError: Attempting to change value of a readonly property. (Safari)
Fehlerart
Was ist schiefgelaufen?
Es wurde versucht, eine Eigenschaft neu zu definieren, die nicht konfigurierbar ist. 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. Normalerweise sind Eigenschaften in einem Objekt, das durch einen Objekt-Initialisierer erstellt wurde, konfigurierbar. Wenn jedoch beispielsweise Object.defineProperty()
verwendet wird, ist die Eigenschaft standardmäßig nicht konfigurierbar.
Beispiele
Nicht konfigurierbare Eigenschaften, die durch Object.defineProperty erstellt wurden
Die Object.defineProperty()
-Methode erstellt nicht konfigurierbare Eigenschaften, wenn Sie sie nicht als konfigurierbar angegeben haben.
const obj = Object.create({});
Object.defineProperty(obj, "foo", { value: "bar" });
Object.defineProperty(obj, "foo", { value: "baz" });
// TypeError: can't redefine non-configurable property "foo"
Sie müssen die Eigenschaft "foo" als konfigurierbar setzen, wenn Sie beabsichtigen, sie später im Code neu zu definieren.
const obj = Object.create({});
Object.defineProperty(obj, "foo", { value: "bar", configurable: true });
Object.defineProperty(obj, "foo", { value: "baz", configurable: true });