TypeError: kann Eigenschaft „x“ auf „y“ nicht zuweisen: kein Objekt

Die JavaScript Strict-Mode-Ausnahme "kann Eigenschaft nicht zuweisen" tritt auf, wenn versucht wird, eine Eigenschaft auf einem Primitiv wie einem Symbol, einem String, einer Nummer oder einem Boolean zu erstellen. Primitive Werte können keine Eigenschaften enthalten.

Meldung

TypeError: Cannot create property 'x' on number '1' (V8-based)
TypeError: can't assign to property "x" on 1: not an object (Firefox)
TypeError: Attempted to assign to readonly property. (Safari)

Fehlertyp

Was ist schiefgelaufen?

Im Strict Mode wird ein TypeError ausgelöst, wenn versucht wird, eine Eigenschaft auf einem Primitiv wie einem Symbol, einem String, einer Nummer oder einem Boolean zu erstellen. Primitive Werte können keine Eigenschaften enthalten.

Das Problem könnte sein, dass ein unerwarteter Wert an unerwarteter Stelle eingesetzt wird oder dass eine Objektvariante eines String oder einer Number erwartet wird.

Beispiele

Ungültige Fälle

js
"use strict";

const foo = "my string";
// The following line does nothing if not in strict mode.
foo.bar = {}; // TypeError: can't assign to property "bar" on "my string": not an object

Behebung des Problems

Entweder den Code so korrigieren, dass das Primitiv nicht an solchen Stellen verwendet wird, oder das Problem durch Erstellen des Objekts-Äquivalents Object beheben.

js
"use strict";

const foo = new String("my string");
foo.bar = {};

Siehe auch