我來自C背景的JavaScript。在JavaScript中,當我使用賦值運算符將一個對象分配給另一個對象時,它是否將值從一個複製到另一個,還是都指向相同的數據?或者在這種情況下,賦值操作符做了什麼?使用Javascript中的賦值運算符設置一個對象等於另一個對象
function point_type()
{
this.x = 0;
this.y = 0;
}
var pnt1 = new point_type();
var pnt2 = new point_type();
pnt1.x = 4;
pnt1.y = 5;
pnt2 = pnt1;
pnt1.x = 8;
pnt2.y = 9;
在上面的例子中,不pnt2.x現在等於8,或者它仍然等於4,或者它仍然等於0?
是的,我意識到我可以自己測試一下,我會在做這件事的時候等待社區拿出答案。然而,我希望我的問題的答案只會回答這一個例子,並且可能會讓我們對JavaScript對象的工作原理和一些最佳實踐有所啓發。
後續問題:
答案似乎是複製引用。 pnt2和pnt1現在指向相同的數據。是否可以設置我的對象,以便複製值?這通常在JavaScript中如何實現?很顯然,我不想每次需要複製這個對象時分別設置每個屬性。
在深層複製,淺拷貝和JavaScript中的「克隆」上有很好的閱讀http://oranlooney.com/functional-javascript/ – micahwittman 2009-12-22 20:22:34