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)
