Sind Variablen / Objekte als Wert übergeben und warum kann ich die Objekteigenschaft nicht mit Variablen in Javascript ändern? [Duplikat
Diese Frage hat hier bereits eine Antwort:
Ist JavaScript eine Pass-by-Reference- oder Pass-by-Value-Sprache? 29 answersAngenommen, ich habe ein Objekt als:
var obj = {
len: 4,
bred: 5
}
Nun nehme ich an, ich ordne dieses Objekt einer Variablen zux
wievar x = obj;
. Soweit ich es verstehe, erstellt es eine Kopie vonobj
und ordne diese Kopie @ x
- das ist als Wert übergeben. Wenn ich jetzt eine Eigenschaft von @ ändex
dann ändert es auch diese Eigenschaft des Objekts obj. Z.B
x.len = 99
Dann beideobj.len
undx.len
werden99
. Betrachten Sie andererseits das folgende Szenario:
var r = 2, s = 3, t = 4;
s = r;
s = 88;
Jetztr
wird als Wert an @ übergebs
Dass
eine Kopie vonr
wurde @ gegebs
. Also @ ändes
zu88
ändert den ursprünglichen Wert von @ nicr
variable. @ Eingebr
in der Konsole gibt noch2
.
Frage 1 Wenn Variablen (einschließlich Objekte) in JavaScript als Wert übergeben werden, warum wird @ dann geänderx.len
ändere das Originalobj.len
, auch
Ein weiteres Problem ist, dass ich die Eigenschaft eines Objekts beim Zuweisen zu einer Variablen nicht ändern kann. Betrachten Sie dieses Szenario:
var obj2 = {
len: 4,
bred: 5
}
var x2;
x2 = obj.len;
Now Typingx2
in der Konsole gibt einfach @ zurü4
. Aber wenn ich versuche, den Wert von @ zu ändex2
sowiex2 = 77;
dann ändert sich das nichtobj2.len
.
Frage 2 Warum kann ich die Eigenschaft eines Objekts nicht mit einer Variablen ändern?