前文写了js对数组的深拷贝,主要是通过slice()与concat()实现,那么如果js深拷贝对象应该如何做?例如对[{a:1},{a:[{c:2},{d:3}]}]进行深拷贝
-
简单方法 利用JSON
let objDul = JSON.parse(JSON.strify(obj)) -
递归判断拷贝
function DeepClone(obj) {
let result = Array.isArray(obj) ? [] : {};//首先判断是数组还是对象
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === 'object' && obj[key]!=null) {
result[key] = DeepClone(obj[key]); //递归,是对象则继续调用该函数
} else {
result[key] = obj[key];//不是对象则直接拷贝进数组
}
}
}
return result;
}