關于clone復制問題
元素數據(data)內對象和數組不會被復制,將繼續被克隆元素和原始元素共享。深復制的所有數據,需要手動復制每一個。
當clone()方法的參數為true時,不是可以把數據一并復制過來嗎?為什么最后一點元素數據內對象和數組又不回被復制了?這一點怎么感覺和深復制矛盾了。
元素數據(data)內對象和數組不會被復制,將繼續被克隆元素和原始元素共享。深復制的所有數據,需要手動復制每一個。
當clone()方法的參數為true時,不是可以把數據一并復制過來嗎?為什么最后一點元素數據內對象和數組又不回被復制了?這一點怎么感覺和深復制矛盾了。
2018-09-02
舉報
2018-09-03
深復制指的是開辟了一塊新的內存并將數據拷貝一份新的到新的內存中
使用clone(true)將繼續被克隆元素和原始元素共享, 兩個元素使用的是同一個數據, 也就是說改變其中一個元素數據, 另一個元素的數據也將改變,
簡單點的例子:
a.data = [1, 2, 3];
b = a.clone(true);
b.data; // [1, 2, 3]
b.data[2] = 5; // [1, 2, 5]
a.data // [1, 2, 5]