对象和数组的深浅拷贝

1、对象的浅拷贝

(1)对象的合并 Object.assign(),第一个参数必须是个空对象

(2)对象的解构赋值

2、对象深拷贝

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

(2)通过转换字符串即内置的JSON对象来转换拷贝

弊端:这种简单粗暴的方法有其局限性,当值为undefined、function、symbol 会在转换过程中被忽略

(3)数组或对象深拷贝(利用循环和递归)

3、数组浅拷贝

(1)利用数组的 slice 方法或者 concat 方法

4、数组深拷贝

        与对象深拷贝方法相同

(1)通过转换字符串即内置的JSON对象来转换拷贝

弊端:这种简单粗暴的方法有其局限性,当值为undefined、function、symbol 会在转换过程中被忽略

(2)数组或对象深拷贝(利用循环和递归)(但是key为null或undefined时不能拷贝)

(3) 原理也比较好理解,他是将原数组中抽离部分出来形成一个新数组。我们只要设置为抽离全部,即可完成数组的深拷贝

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

vararr2 = arr.slice(0)

arr[2] =5

console.log(arr)

console.log(arr2)


你可能感兴趣的:(对象和数组的深浅拷贝)