Object.assign() 合并对象
最后更新:2026-09-09
Object.assign() 合并对象
Object.assign 将一个或多个源对象的可枚举属性复制到目标对象,返回目标对象。浅拷贝合并——嵌套对象仍然共享引用。
| 分类 | 对象 |
|---|---|
| ES 版本 | ES5 |
📝 语法
const 合并后 = Object.assign(目标, 源1, 源2);
⚙️ 参数
| target | 目标对象——属性被复制到这个对象上并返回。 |
|---|---|
| sourceN | 一个或多个源对象。 |
返回值:合并后的目标对象。
是否修改原值:是(原地修改)
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
{ theme: 'dark', lang: 'zh', size: 'md' }
💡 提示 Object.assign({}, a, b) 第一个参数传空对象可以避免修改原始对象——但更推荐展开符 { ...a, ...b }。
⚠️ 警告 浅拷贝——嵌套对象仍然共享引用,修改嵌套属性会同时影响源和目标。
🌐 浏览器支持
| 浏览器 | |||||
|---|---|---|---|---|---|
| Object.assign() | ✓ v1 | ✓ v12 | ✓ v1.5 | ✓ v3 | ✓ v10.5 |
| 所有现代浏览器均支持 | |||||
🏷️ 相关对象
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
QObject.assign 是深拷贝吗?
A不是——浅拷贝。嵌套对象共享引用。深拷贝用 structuredClone。
QObject.assign 和展开符的区别?
A功能相同。展开符 { ...a, ...b } 更简洁且不修改原始对象。
Q如何合并嵌套对象?
AObject.assign 是浅合并——需要深合并手写递归或用 lodash.merge。