據我所知,JavaScript中的對象是通過引用而不是值來複制的。但是我寫的下面的代碼並沒有像預期的那樣工作。也許我不知道正確的行爲。請提供見解和可能的解決方案,以避免這種情況。複製參考
我的代碼:
它打印 - {u:1,v:2,w:3}
,
則 -
var c = a;
c.setobj({x:4,y:5});
console.log(c.obj); //prints {x:4,y:5}
console.log(a.obj); //prints {x:4,y:5}
console.log(b.obj); //prints {x:4,y:5}
但:
console.log(m); //prints {u:1,v:2,w:3}
我期待米到包含參考b.obj,其中b包含a的引用。後者正在工作,但前者(米的參考)不起作用。請提供一個洞察力,並告訴我我錯過了什麼。這是我的非常愚蠢的假設還是有我不知道的東西?
是的,你的假設是錯誤的。 m是對存儲在b.obj中的對象的引用。你以後重寫了這個參考,但它不會神奇地讓m指向一個新的對象。另外,「通過參考複製」並沒有多大意義。 – flq