2017-10-05 40 views
1
var obj = { arr: [{ x: 17 }] }; 
var z = obj.arr; 
z = [{ x: 25 }]; 
console.log(obj.arr[0].x); 

控制檯打印出17可以有人解釋我怎麼樣? 按我的知識z的參考obj.arr和重新初始化Z,控制檯應該打印出25在JS中通過引用複製 - 爲什麼這個代碼17的輸出?

+1

這個頭銜是太可怕了,創建一個可搜索的標題,並在您的文章的正文中添加你的榜樣。編輯:後編輯但OP需要明白這 –

+0

設置'z'爲'obj.arr'後立即重新將其設置爲一個全新的陣列。這不會影響'obj.arr'。 – Pointy

+0

我以爲z引用了obj.arr,因爲它是一個數組。你能解釋一下如何通過引用複製工作在JS中,尤其是引用內部對象屬性。 – yoyo44

回答

2

聲明

z = [{ x: 25 }]; 

將取代Z的前值。那時,z已經不再與「obj」有關。

如果你想通過z改變obj,你會需要像

z[0].x = 25; 
相關問題