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