浅拷贝:同值也同地址。如:Object.assign合并对象、=、slice截取
深拷贝:同值不同地址。如:JSON.parse(JSON.Stringify())
利用递归进行深克隆
let arr = [1,[2,3],4,5,6]
function deepClone(arr){
let res=null;//声明一个空的变量
//判断是否是数组
if(Array.isArray(arr)){
res = []
arr.forEach(item=>{
res.push(deepClone(item))
})
}else if(typeof(arr)==='Function'){//判断是否是函数
res = arr
}else if(arr === 'null'){//判断是否是null
res = arr
}else if(arr instanceof Object){//判断是否是对象
res = {}
for(var key in arr){
res[key] = deepClone(arr[key])
}
}else{//基本数据类型
res=arr
}
return res
}
let newarr = deepClone(arr)
newarr[1].push(2)
console.log(newarr)
console.log(arr)