方法一 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
}
本文介绍了两种JavaScript中实现对象深拷贝的方法:JSON序列化法和递归法。JSON方法通过将对象转换为JSON字符串再解析为新对象来实现拷贝,但无法处理函数。递归法则通过遍历源对象的所有属性,对每个属性进行深度检查并复制,适用于复杂对象的拷贝。这种方法详细解释了如何处理对象和数组的递归复制。
3130

被折叠的 条评论
为什么被折叠?



