TypeError: kann nicht konfigurierbare Eigenschaft "x" neu definieren

Die JavaScript-Ausnahme "kann nicht konfigurierbare Eigenschaft 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)

Fehlertyp

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 mit einem Objekt-Initialisierer erstellt wurde, konfigurierbar. Wenn jedoch zum Beispiel Object.defineProperty() verwendet wird, ist die Eigenschaft standardmäßig nicht konfigurierbar.

Beispiele

Nicht konfigurierbare Eigenschaften, erstellt mit Object.defineProperty

Die Object.defineProperty()-Methode erstellt nicht konfigurierbare Eigenschaften, wenn Sie diese nicht als konfigurierbar festgelegt 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 "foo"-Eigenschaft auf 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