可以使用 Object.assign()或扩展运算符 ... 来合并 js 对象。
下面是两种合并对象的方式:
一、常见方法
1、Object.assign()
let obj1 = { a: 1, b: 2 };
let obj2 = { c: 3, d: 4, e: {name: '我是小草莓'} };
const mergedObj = Object.assign({}, obj1, obj2);
console.log(mergedObj); // { a: 1, b: 2, c: 3, d: 4, e: {name: "我是小草莓"} }
obj1.a = 1111
console.log(mergedObj); // { a: 1, b: 2, c: 3, d: 4, e: {name: "我是小草莓"} }
// 浅拷贝
obj2.e.name = '我是改过的小草莓'
console.log(mergedObj); // { a: 1, b: 2, c: 3, d: 4, e: {name: "我是改过的小草莓"} }
2、扩展运算符 ...
let obj1 = { a: 1, b: 2 };
let obj2 = { c: 3, d: 4, e: {name: '我是小草莓'} };
const mergedObj = {...obj1, ...obj2};
console.log(mergedObj); // { a: 1, b: 2, c: 3, d: 4, e: {name: "我是小草莓"} }
obj1.a = 1111
console.log(mergedObj); // { a: 1, b: 2, c: 3, d: 4, e: {name: "我是小草莓"} }
// 浅拷贝
obj2.e.name = '我是改过的小草莓'
console.log(mergedObj); // { a: 1, b: 2, c: 3, d: 4, e: {name: "我是改过的小草莓"} }
二、使用注意
注意的是,
① 如果合并的对象中有同名属性,则后面的属性值会覆盖前面的属性值。
② 以上2种方式合并对象,属于浅拷贝的方式。只有第一层是深拷贝,第二层及以上都是浅拷贝