我有一個要替換的對象。 - >js替換對象/更改參考
var obj1 = { x: 'a' };
var ref = obj1;
var obj2 = { y: 'b' };
obj1 = obj2;
結果
ref = { x: 'a' }
,但我希望它得到改變,以及指向OBJ2得到
ref = { y: 'b' }
我有一個要替換的對象。 - >js替換對象/更改參考
var obj1 = { x: 'a' };
var ref = obj1;
var obj2 = { y: 'b' };
obj1 = obj2;
結果
ref = { x: 'a' }
,但我希望它得到改變,以及指向OBJ2得到
ref = { y: 'b' }
不可能的。 JS通過引用的副本傳遞對象,因此在步驟var ref = obj1
中,實際上並不像使用C語言那樣分配引用指針。而是創建指向外觀對象的引用的副本如{x: 'a'}
。
看到這個答案你有其他選擇:https://stackoverflow.com/a/17382443/6415214。
你可以嘗試改變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'}
這不是很清楚,你想要什麼 –
I b asically想要替換對象的引用。所以,當我做obj1 = obj2,我希望所有引用obj1被替換爲obj2的引用 – Chris
這只是不是如何JavaScript工作:) – ValLeNain