JavaScript深拷贝

简单实现深拷贝:

function deepCopy(obj){
if(obj === null) return null;
if(typeof obj !== "object") return obj;
if(obj instanceof RegExp){
return new RegExp(obj)
}
if(obj instanceof Date){
return new Date(obj)
}
let newObj = new obj.constructor;
for(let key in obj){
if(obj.hasOwnProperty(key)){
newObj[key] = deepCopy(obj[key]);
}
}
return newObj;
}

存在弊端:函数、日期、正则🙅

let newObj = JSON.parse(JSON.stringify(oldObj))

浅拷贝:

let newObj = Object.assign({}, oldObj)

let newObj = {...oldObj}

使用lodash的cloneDeep方法也可实现深拷贝

posted @ 2020-12-27 20:20  ZhangYingBKY  阅读(76)  评论(0)    收藏  举报