JavaScript对象深拷贝
JSON.parse() + JSON.stringify()
简单好用,但是这种方法不会拷贝原对象上的键为function类型的数据
const cloneObj = JSON.parse(JSON.stringify(Obj))
递归
递归函数记得设置退出条件,否则很容易造成栈溢出
function deepClone(obj) {
let cloneObj;
if(typeof obj !== "object" || obj == null){
return cloneObj = obj
}
cloneObj = Array.isArray(obj) ? [] : {};
Object.keys(obj).forEach(item => { //只遍历对象自身的可枚举属性,不包含Symbol
cloneObj[item] = deepClone(obj[item])
})
return cloneObj
}