方法一 JSON方法
const objCopy = JSON.parse(JSON.stringify(obj));
该方法函数不能拷贝
方法二 递归
// source 拷贝对象
function deepClone(source) {
// .constructor指向该对象的构造函数
const targetObj = source.constructor === Arry? [] : {};
// 遍历对象或数组
for(let key in source) {
// obj.hasOwnProperty() 指示对象自身属性中是否具有指定的属性
if(source.hasOwnProperty(key)) {
// 判断自身属性是否存在,且是否为对象,是对象进一步遍历,非对象直接赋值,不存在属性不执行
if(source[key] && typeof(source[key]) ==='object') {
// 维护层代码 进一步判断source[key] 运行代码可去除
targetObj[key] = source[key].constructor === Arry? []: {}
// 递归
targetObj[key] = deepClone(source[key])
}else{
// source[key]不是对象时直接赋值
targetObj[key]= source[key]
}
}
}
return targetObj
}