Tach!
Erstens, warum ist
this.a = data.a;
anscheinend keine Referenz? Beziehungsweise was ist mein Denkfehler?
Bei primitiven Typen wird der Wert übergeben, da sie einfach kopiert werden können. Objekte können beliebig verschachtelt sein, auch rekursiv, da wird der Einfachheit halber eine Referenz weitergegeben.
Und Zweitens, wie kann man eine Referenz auf eine Eigenschaft eines Objektes erzeugen.
Meines Wissens nach gar nicht, wenn es sich dabei um primitive Typen handelt. Du könntest den Wert in ein Objekt betten, à la new Number(42)
, aber das gibt keinen Vorteil. Der Wert dieses Objekts ist nicht änderbar. Wenn du der Eigenschaft deines Objekts ein neues solches Wrapper-Objekt zuweist, bricht das genauso die Referenz wie wenn du vorher den Wert kopiert hättest.
data.a = 42
a = data.a; // Kopie
data.a = 23;
// a ist immer noch 42
data.a = new Number(42)
a = data.a; // Referenz
data.a = new Number(23);
// a ist immer noch Number(42)
dedlfix.