什么是 深拷贝,浅拷贝,
浅拷贝:拷贝对象或者数组的时候将该数组的引用地址一同拷贝过去了,
改变拷贝后的数组/对象会影响原来的值
深拷贝:拷贝对象或者数组的时候值拷贝值,改变拷贝后的数组/对象不会影响原来的值
Talk is Cheap ,Show me the Code
let obj = {
name:'lsk',
age:'13',
detail:{
x:111,
u:222
},
arr:[1,2,4,[5,6]]
}
function deepClone(obj={}){
if(typeof obj !=='object' || obj==null){
return obj
}
let result
if(obj instanceof Array){
result = []
}else{
result = {}
}
for(let key in obj){
if(obj.hasOwnProperty(key)){
result[key] = deepClone(obj[key])
}
}
return result
}
let obj2 = deepClone(obj)
obj2.arr[3][0]= 'lsk'
console.log('obj2',obj,obj2)
我觉得这是很简洁的一种写法,主要是递归,要多多练习