1、对于简单数据类型要实现深拷贝,用简单的复制方法即可;
2、对于引用数据类型,若用简单的复制语句,就只是复制了数据的地址,若源对象发生改变,那么复制的数据也会发生改变,这时就需要深浅拷贝来实现了;浅拷贝是针对一层的复制,即对象中的元素是基本数据类型;当对象的元素不是基本数据类型时,即多层,将用到深拷贝的方式;
let oldObj = {
name:'tom',
age:20,
father:{
name:'jack'
}
}
let newObj = deepClone(oldObj)
function deepClone(obj){
if(!obj || typeof obj!== 'object'){
return obj
}
let result = Array.isArray(obj)?[]:{}
for(let key in obj){
if(obj.hasOwnProperty("key")){
if(obj[key] && typeof obj[key] === 'object'){
result[key] = deepClone(obj[key])
}else{
result[key] = obj[key]
}
}
}
return result
}