關(guān)于clone復(fù)制問題
元素數(shù)據(jù)(data)內(nèi)對象和數(shù)組不會被復(fù)制,將繼續(xù)被克隆元素和原始元素共享。深復(fù)制的所有數(shù)據(jù),需要手動復(fù)制每一個。
當(dāng)clone()方法的參數(shù)為true時,不是可以把數(shù)據(jù)一并復(fù)制過來嗎?為什么最后一點元素數(shù)據(jù)內(nèi)對象和數(shù)組又不回被復(fù)制了?這一點怎么感覺和深復(fù)制矛盾了。
2018-09-03
深復(fù)制指的是開辟了一塊新的內(nèi)存并將數(shù)據(jù)拷貝一份新的到新的內(nèi)存中
使用clone(true)將繼續(xù)被克隆元素和原始元素共享, 兩個元素使用的是同一個數(shù)據(jù), 也就是說改變其中一個元素數(shù)據(jù), 另一個元素的數(shù)據(jù)也將改變,
簡單點的例子:
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]