javascript實現(xiàn)深克隆的方法:1、利用“…”延展操作符,可以深克隆一層,但是第二層引用仍然指向原來的位置;2、利用JSON,可以實現(xiàn)多層的深克隆,但是無法復制function,無法適用全部場景;3、利用遞歸和循環(huán)挨個創(chuàng)建參數(shù)和賦值。
本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。
javascript怎么實現(xiàn)深克隆
由于Object類型與Array類型是引用類型,而引用類型在變量間的相互賦值是將指向內(nèi)存的指針賦予過去,這樣就會導致,當改變b的數(shù)據(jù)會將a的數(shù)據(jù)一同改變。
而在實際的開發(fā)過程中,有很多時候需要將兩個變量間的關聯(lián)斷開,所以需要用到深克隆斷開這個聯(lián)系。
1、使用延展操作符(…)實現(xiàn)深克隆
這種方式是最簡單且便捷的一種方式,但是只能深克隆一層,第二層的引用依然指向原來的位置。
2、使用JSON實現(xiàn)深克隆
這種方式也比較簡便,并且可以實現(xiàn)多層的深克隆,但是無法復制function,無法適用全部場景。

3、使用遞歸和循環(huán)挨個創(chuàng)建參數(shù)和賦值
能夠完全復制一個對象
// 深克隆function deepCopy(value) { if(value instanceof Function)return value else if (value instanceof Array) { var newValue = [] for (let i = 0; i < value.length; ++i) newValue[i] = deepCopy(value[i]) return newValue } else if (value instanceof Object) { var newValue = {} for (let i in value) newValue[i] = deepCopy(value[i]) return newValue } else return value}