Argumente (einschließlich Objekte) werden per Wert an eine Funktion gesendet. Eigenschaften eines Argumentobjekts sind verfügbar und änderbar, das verhält sich wie Referenzen. Schauen Sie sich das Beispiel unten:
function changeObj(obj){obj.a *= 10; return true;}
function killObj(obj){obj = null; return true;}
function changeAndKillObj(obj){obj.a += 1; obj = null; return true;}
var a = {a:1, b:'test'};
console.log(a); //Object {a:1, b:'test'}
changeObj(a);
console.log(a); //Object {a:10, b:'test'}
killObj(a);
console.log(a); //Object {a:10, b:'test'}
changeAndKillObj(a); //Object {a:11, b:'test'}
Fazit: Sie können tun, was Sie mit Objekteigenschaften wollen aber nicht mit dem Objekt selbst. Jede Zuweisung zu dem Argument führt zu einem anderen Objekt und zum Aufheben der Verknüpfung vom ursprünglichen Objekt.
Javascript ist nicht C. – doug65536