Ich stieß auf ein seltsames Problem in meiner Knoten-Anwendung. Wenn ich den Inhalt einer Variablen nehme und sie einer anderen zuweise, kettet sie irgendwie eine Verbindung zwischen ihnen auf die Art und Weise, dass, wenn ich Inhalte in der zweiten Variable ändere, auch die erste betrifft, von der ich Inhalt genommen habe.Zuweisung von Wert der Variablen zu einer anderen Variablen macht es zu einem Spiegel
dies ist mein Server-Struktur:
var body = {};
lässt Körper bevölkern jetzt:
body[_session] = {
content: { /* some data here */ },
sockets: []
};
dann irgendwann ich dies tun:
body[new_session] = {
content: body[_session].content,
sockets: []
};
zu diesem Zeitpunkt vorgenommenen Änderungen zu new_session
Inhalt wird auch auf Original _session
Inhalt gemacht werden.
i löste dieses Problem, indem sie dies zu tun:
body[new_session] = {
content: JSON.parse(JSON.stringify(body[_session].content)),
sockets: []
};
aber es scheint, wie kostspieliger Vorgang und etwas, das ich nicht noch gerade vermieden werden könnte, wissen, wie, vielleicht jemand eine Idee, warum es passiert und wie es kann ohne viel Aufwand gelöst werden.
Objektzuweisungen in Javascript sind nur Referenzbedeutung, nur Referenzen auf die Objekte werden zugewiesen, nicht die Kopie davon. – abhishekkannojia