根据您给的文档内容,
深厚拷贝与浅薄拷贝的定义
- 浅薄拷贝复制一个对象的引用,并不是复制对象本身。在JavaScript中, 浅薄拷贝意味着只复制对象的第一层属性,对于嵌套的引用类型属性,复制的依然是引用嗯。
- 深厚拷贝创建一个新鲜的对象,然后将原对象的全部属性值复制到新鲜对象中。Ru果属性值是引用类型,深厚拷贝会递归地复制其子对象的全部属性。
实现深厚拷贝的方法
- JSON.parse)Zui轻巧松的方式, 但无法复制函数、undefined、Symbol等。
- 递归拷贝手动实现一个递归函数,遍历对象的个个属性,Ru果是对象则递归复制。
- WeakMap解决循环引用问题,避免递归弄得的死循环。
实现浅薄拷贝的方法
- Object.assign复制第一层属性。
-
运算符同样只复制第一层属性。
- 解构赋值与
运算符类似,只复制第一层属性。
应用场景
- 深厚拷贝当需要彻头彻尾独立的对象副本时 比方说在缓存对象、避免外部修改对象内部状态等场景。
- 浅薄拷贝当只需要复制第一层属性,或者对象本身不包含麻烦的嵌套引用时。
代码示例
javascript
function deepClone) {
if {
return obj;
}
if ) {
return map.get;
}
let newObj = obj instanceof Array ? : {};
map.set;
for {
if ) {
newObj = deepClone;
}
}
return newObj;
}
以上内容给了JavaScript中深厚拷贝和浅薄拷贝的概述、 实现方法以及应用场景,希望对您有所帮。