方法1.使用JSON
缺点:
1.如果obj里有function和undefined,序列化的时候会丢失
2.如果obj里有循环引用,则不能进行深拷贝
let obj = {
age:20,
hobby:['游戏','上课','干饭'],
name:'李四',
student:{name:'1111',age:38}
}
let jsonStr = JSON.stringify(target)
let newObj = JSON.parse(jsonStr)
console.log(newObj)
方法2:递归
缺点:只做了值类型和数组/对象的处理,如果有例如date,function其他类型都拷贝不出来
function cloneDeep(obj,newObj){
for (let key in obj) {
if(obj[key] instanceof Array){
newObj[key] = []
cloneDeep(obj[key],newObj[key])
}else if(obj[key] instanceof Object){
newObj[key] = {}
cloneDeep(obj[key],newObj[key])
}else{
newObj[key] = obj[key]
}
}
}
let newObj = {}
cloneDeep(obj,newObj)
console.log(newObj)