Ich möchte verstehen, warum es erlaubt ist, einer Zeichenkette oder einem anderen Primitiven eine Eigenschaft zuzuweisen, obwohl JavaScript diesen Wert nie speichert. Ich weiß, dass "xyz" nicht dasselbe ist wie Object("xyz"), aber schaut hier:
var o = "xyz";
o.value = "foo bar";
alert(o.value); // zeigt "undefined"
Die Eigenschaft "value" bleibt direkt nach der Zuweisung undefiniert. Wenn o ein Objekt ist, wird die Eigenschaft "value" ordnungsgemäß zugewiesen und im Alert-Statement zurückgegeben. Wenn o undefiniert ist, führt die Zuweisung der Eigenschaft zu einem TypeError. Aber wenn o eine Zeichenkette ist, passiert überhaupt nichts, die Zuweisung wird einfach ignoriert. Okay, in meinem Beispiel ist o eine Variable, aber auch "xyz".value = "foo bar" ist völlig legal?