2017-01-23 2 views
3

Ich habe ein Objekt, das ich ersetzen möchte. ->js replace object/Referenz ändern

var obj1 = { x: 'a' }; 
var ref = obj1; 
var obj2 = { y: 'b' }; 
obj1 = obj2; 

Ergebnisse in

ref = { x: 'a' } 

aber ich will es geändert werden und zeigen auf obj2

ref = { y: 'b' } 
+0

tun kann, ist es nicht ganz klar, was Sie wollen –

+0

I b möchte natürlich den Verweis auf ein Objekt ersetzen. Wenn ich also obj1 = obj2 mache, möchte ich, dass alle Verweise auf obj1 durch einen Verweis auf obj2 ersetzt werden. – Chris

+2

Das funktioniert einfach nicht. – ValLeNain

Antwort

1

Nicht möglich zu erhalten. JS übergibt Objekte anhand einer Kopie der Referenz, sodass Sie in Schritt var ref = obj1 keinen Referenzzeiger wie in einer Sprache wie C zuweisen. Stattdessen erstellen Sie eine Kopie einer Referenz, die auf ein Objekt zeigt, das nachschlägt wie {x: 'a'}.

Finden Sie diese Antwort für andere Optionen, die Sie haben: https://stackoverflow.com/a/17382443/6415214.

1

Sie können versuchen, alle Felder obj1 mit den Bereichen obj2

var obj1 = { x: 'a' }; 
var ref = obj1; 
var obj2 = { y: 'b' }; 
obj1.x = obj2.y; 
console.log(ref) // Print {x, 'b'} 

zu ändern, wenn Sie {y, 'b'} hinzufügen möchten Sie den Ansatz folgen

obj1.y=obj2.y 
console.log(obj1); prints {x: "b", y: "b"} 
console.log(ref); prints {x: "b", y: "b"} 

wenn Sie stattdessen löschen möchten obj1.x Sie so etwas wie dieses

delete obj1.x; 
console.log(ref) prints {y:'b'}