深拷贝和浅拷贝是针对于复杂数据类型来说的;
1:深拷贝指的是两份数据指向不同的内存地址,修改一个不会对复制出来的数据有影响;
2: 浅拷贝指的是两个变量指向同一个地址,修改一个数据,另一个数据也会改变;
实现深拷贝的方式:
1:递归遍历
deepClone(obj) {
let objClone = Array.isArray(obj) ? [] : {};
if(obj && typeof obj === 'object') {
for(key in obj) {
if(obj[key] && typeof obj[key] === 'object'){
objClone[key] = deepClone(obj[key]) // 递归调用自身
} else {
objClone[key] = obj[key]
}
}
}
return objClone
}
2: JSON.parse(JSON.stringfy(obj))
3: 借用jq的extend
$.extend(true/false, target, obj);
1: true 深拷贝
2: target 目标对象
3: obj 可选,被合并的对象
深拷贝、浅拷贝区别
最新推荐文章于 2024-07-20 10:36:53 发布