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方法也可实现深拷贝

浙公网安备 33010602011771号