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.

js
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.

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

Siehe auch