方法一
function deepClone(obj) {
const targetObj = obj.constructor === Array ? [] : {} //判断是数组还是对象
for (let keys in obj) { //遍历
if (obj.hasOwnProperty(keys)) { //判断是否有这个属性,容错处理
if (obj[keys] && typeof obj[keys] === 'object') { //如果是否为对象,如果是,进入回调
targetObj[keys] = obj[keys].constructor === Array ? [] : {} //判断是数组还是对象
targetObj[keys] = deepClone(obj[keys]) //回调
} else {
targetObj[keys] = obj[keys] //直接拷贝
}
}
}
return targetObj
}
方法二 有缺陷,简单的需求可以用
let aa=['a','b','c'];
let hh=JSON.parse(JSON.stringify(aa))
时间、正则、函数、NaN,undefined,循环引用。。。等数据问题