前端/移动开发面试题更新 2026-08-05

在 JavaScript 开发中,合并对象有哪些常用方法?请对比它们的区别。

前端/移动开发技术原理方案权衡JavaScript

考察说明

考查对 JavaScript 对象合并方法的掌握程度及对比分析能力。

回答思路

  1. 【回答框架 1】对象合并常见方法包括 Object.assign、展开运算符和 Object spread。Object.assign(target, ...sources) 会修改并返回目标对象,适用于将多个源对象属性复制到目标对象。展开运算符 {...obj1, ...obj2} 不会修改原对象,更简洁,常用于创建新对象。
  2. 【回答框架 2】需要注意浅拷贝与深拷贝的区别。以上方法都是浅拷贝,嵌套对象仍是引用。若需深拷贝,可使用 structuredClone 或递归实现,但需考虑循环引用和性能。
  3. 【回答框架 3】不同方法的差异:Object.assign 会触发 setter,展开运算符不会;展开运算符在数组和对象中均可用,而 Object.assign 只适用于对象。
  4. 【回答框架 4】实际使用时,若合并多个对象且需保留原对象不变,推荐展开运算符;若需在现有对象上追加属性,可用 Object.assign。
  5. 【回答框架 5】合并时若属性冲突,后者覆盖前者,需明确优先级顺序。
  6. 【关键点 1】Object.assign 修改目标对象,返回目标对象;展开运算符创建新对象。
  7. 【关键点 2】两者均为浅拷贝,嵌套对象仍是引用。
  8. 【关键点 3】属性冲突时后者覆盖前者。
  9. 【易错点 1】误以为浅拷贝是深拷贝,导致嵌套对象修改互相影响。
  10. 【易错点 2】使用 Object.assign 时未注意第一个参数会被修改,导致副作用。
  11. 【易错点 3】在旧环境不支持展开运算符或 Object.assign,需考虑兼容性。