(1)Object.assign()
同名属性会被覆盖 Object.assign种第一个值是目标对象,第二个值是源对象
const obj1={a:"1",b:"2"}
const obj2={b:"3",c:"4"}
const result = Object.assign(obj1,obj2)
console.log(result)
//a:1 b:3 c:4 obj1中b的值被后面传入的obj2的值给覆盖掉了
(2) 扩展运算符
同名属性会被覆盖
使用…扩展运算符合并对象obj1对象在前和在后最后打印的结果是不同的
const obj1={a:"1",b:"2"};
const obj2={b:"3",c:"4"};
const result = {...obj1,...obj2};
console.log(result)
//a:1 b:3 c:4 obj1中b的值被后面传入的obj2的值给覆盖掉了
(3)lodash.assign
//1、先将lodash工具库引入:
<script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.js">
</script>
//2.在项目中我们通常使用_来代替lodash
const obj1={a:"1",b:"2"};
const obj2={b:"3",c:"4"};
const result = _.assign(obj1,obj2);
console.log(result)
//a:1 b:3 c:4
(4)lodash.merge
//1、先将lodash工具库引入:
<script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.js">
</script>
//2.在项目中我们通常使用_来代替lodash
const obj1={a:"1",b:"2"};
const obj2={b:"3",c:"4"};
const result = _.merge(obj1,obj2);
console.log(result)
//a:1 b:3 c:4
注意:lodash.assign和lodash.merge的区别
1、assign遇到同名的属性会直接覆盖
2、assign 不会处理原型链上的属性,也不会合并相同的属性,而是用后面的属性值覆盖前面的属性值
3、merge遇到相同属性名的时候,若是属性值是纯对象或集合的时候,会合并属性值