對(duì)象和數(shù)組的深淺拷貝

1、對(duì)象的淺拷貝

(1)對(duì)象的合并 Object.assign(),第一個(gè)參數(shù)必須是個(gè)空對(duì)象

(2)對(duì)象的解構(gòu)賦值

2、對(duì)象深拷貝

(1)利用jQuery的$.extend方法

(2)通過(guò)轉(zhuǎn)換字符串即內(nèi)置的JSON對(duì)象來(lái)轉(zhuǎn)換拷貝

弊端:這種簡(jiǎn)單粗暴的方法有其局限性,當(dāng)值為undefined、function、symbol 會(huì)在轉(zhuǎn)換過(guò)程中被忽略

(3)數(shù)組或?qū)ο笊羁截悾ɡ醚h(huán)和遞歸)

3、數(shù)組淺拷貝

(1)利用數(shù)組的?slice?方法或者?concat?方法

4、數(shù)組深拷貝

????????與對(duì)象深拷貝方法相同

(1)通過(guò)轉(zhuǎn)換字符串即內(nèi)置的JSON對(duì)象來(lái)轉(zhuǎn)換拷貝

弊端:這種簡(jiǎn)單粗暴的方法有其局限性,當(dāng)值為undefined、function、symbol 會(huì)在轉(zhuǎn)換過(guò)程中被忽略

(2)數(shù)組或?qū)ο笊羁截悾ɡ醚h(huán)和遞歸)(但是key為null或undefined時(shí)不能拷貝)

(3)?原理也比較好理解,他是將原數(shù)組中抽離部分出來(lái)形成一個(gè)新數(shù)組。我們只要設(shè)置為抽離全部,即可完成數(shù)組的深拷貝

var arr = [1,2,3,4,5]

vararr2 = arr.slice(0)

arr[2] =5

console.log(arr)

console.log(arr2)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容