溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

javascript如何實現(xiàn)深克隆

發(fā)布時間:2022-03-10 12:34:06 來源:億速云 閱讀:153 作者:小新 欄目:web開發(fā)

小編給大家分享一下javascript如何實現(xiàn)深克隆,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

javascript實現(xiàn)深克隆的方法:1、利用“…”延展操作符,可以深克隆一層,但是第二層引用仍然指向原來的位置;2、利用JSON,可以實現(xiàn)多層的深克隆,但是無法復(fù)制function,無法適用全部場景;3、利用遞歸和循環(huán)挨個創(chuàng)建參數(shù)和賦值。

本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。

javascript怎么實現(xiàn)深克隆

由于Object類型與Array類型是引用類型,而引用類型在變量間的相互賦值是將指向內(nèi)存的指針賦予過去,這樣就會導(dǎo)致,當(dāng)改變b的數(shù)據(jù)會將a的數(shù)據(jù)一同改變。

javascript如何實現(xiàn)深克隆
而在實際的開發(fā)過程中,有很多時候需要將兩個變量間的關(guān)聯(lián)斷開,所以需要用到深克隆斷開這個聯(lián)系。

1、使用延展操作符(…)實現(xiàn)深克隆

這種方式是最簡單且便捷的一種方式,但是只能深克隆一層,第二層的引用依然指向原來的位置。

javascript如何實現(xiàn)深克隆

2、使用JSON實現(xiàn)深克隆

這種方式也比較簡便,并且可以實現(xiàn)多層的深克隆,但是無法復(fù)制function,無法適用全部場景。

javascript如何實現(xiàn)深克隆
3、使用遞歸和循環(huán)挨個創(chuàng)建參數(shù)和賦值

能夠完全復(fù)制一個對象

// 深克隆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}

javascript如何實現(xiàn)深克隆

以上是“javascript如何實現(xiàn)深克隆”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI