深拷贝合并这块代码的疑问
来源:9-3 合并配置的设计与实现 - 配置合并策略(下)

安德鲁的小围巾
2021-11-05
这块代码是不是为了处理以下这样的情况的
config1
config2
如果不加这段判断逻辑,结果就成config2的test就把config1的test直接覆盖了,而不是 以下这样(正确的)
test:{
a: '222',
test:{
a: '111'
}
}
那么执行的时候config1里面外层test的a:111是不是往result里面拷贝了两次啊,第一次是result没有a:111的时候,第二次是发现遍历到test:{a: 222}result里面有a:111这个对象,然后又把 a:111 拷贝了一下(同样的key value覆盖),接着把a:222再拷贝过去覆盖掉a:111?然后再把config1 第二层的test:{a: 111}拷贝到result保留,毕竟config2的test只有一层。
写回答
1回答
-
ustbhuangyi
2021-11-07
就是在合并属性的时候,如果遇到属性的值是对象类型,就需要递归执行 deepMerge,如果直接赋值的话就是浅拷贝了
00
相似问题