2017-01-23 56 views
3

我有一個要替換的對象。 - >js替換對象/更改參考

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

結果

ref = { x: 'a' } 

,但我希望它得到改變,以及指向OBJ2得到

ref = { y: 'b' } 
+0

這不是很清楚,你想要什麼 –

+0

I b asically想要替換對象的引用。所以,當我做obj1 = obj2,我希望所有引用obj1被替換爲obj2的引用 – Chris

+2

這只是不是如何JavaScript工作:) – ValLeNain

回答

1

不可能的。 JS通過引用的副本傳遞對象,因此在步驟var ref = obj1中,實際上並不像使用C語言那樣分配引用指針。而是創建指向外觀對象的引用的副本如{x: 'a'}

看到這個答案你有其他選擇:https://stackoverflow.com/a/17382443/6415214

1

你可以嘗試改變OBJ1的所有領域與obj2的

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

領域。如果你想添加{Y, 'B'}您可以採取的辦法

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

如果你不是想刪除obj1.x你可以做這樣的事情

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