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)

网友评论