浅拷贝:
function shallowCopy(obj){
//1.判断obj是否是对象
if(typeof obj !== 'object' || obj === null) return obj;
//2.新建copyObj
let copyObj = obj instanceof Array ? [] : {}
//3.循环obj进行赋值操作
for(let key in obj){
if(obj.hasOwnProperty(key)){
copyObj[key] = obj[key]
}
}
return copyObj
}
深拷贝:
function deepCopy(obj){
//1.判断obj是否是对象
if(typeof obj !== 'object' || obj === null) return obj;
//2.新建copyObj
let copyObj = obj instanceof Array ? [] : {}
//3.循环obj进行赋值操作
for(let key in obj){
if(obj.hasOwnProperty(key)){
if(typeof obj[key] !== 'object' || obj[key] === null){
copyObj[key] = obj[key]
}else{
copyObj[key] = deepCopy(obj[key])
}
}
}
return copyObj
}