使用展开运算符(...)合并对象时,将源对象的属性逐个复制到新对象中。通过 { ...obj1, ...obj2 } 语法,后出现的同名属性会覆盖先前的属性,从而实现浅层合并。

展开运算符如何覆盖同名属性
当多个对象包含相同的键时,展开运算符按照从左到右的顺序处理,右侧对象的值会直接替换左侧对象的对应值。

const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const merged = { ...obj1, ...obj2 };
console.log(merged); // { a: 1, b: 3, c: 4 }如何处理嵌套对象的合并
展开运算符仅执行浅层复制,如果对象属性本身是引用类型(如另一个对象或数组),合并后的新对象中的该属性仍指向原内存地址。
立即学习“Java免费学习笔记(深入)”;

const user = { name: 'Alice', settings: { theme: 'dark' } };
const updated = { ...user, settings: { ...user.settings, fontSize: 14 } };
console.log(updated.settings.theme); // 'dark'基于空对象作为目标参数的具体行为
在调用 Object.assign() 或进行展开运算时,如果第一个参数为空对象 {},则不会修改任何现有对象实例,而是返回一个全新的合并结果。


















