我需要能够在运行时合并两个(非常简单的)JavaScript 对象。例如我想:
var obj1 = { food: 'pizza', car: 'ford' }
var obj2 = { animal: 'dog' }
obj1.merge(obj2);
//obj1 now has three properties: food, car, and animal
有没有内置的方法来做到这一点?我不需要递归,也不需要合并函数,只需要平面对象上的方法。
原文由 JC Grubbs 发布,翻译遵循 CC BY-SA 4.0 许可协议
ECMAScript 2018 标准方法
您将使用 对象传播:
merged
现在是obj1
和obj2
的并集。obj2
中的属性将覆盖obj1
中的属性。这里也是这个语法的 MDN 文档。如果你使用 babel,你需要 babel-plugin-transform-object-rest-spread 插件才能工作。
ECMAScript 2015 (ES6) 标准方法
(见 MDN JavaScript 参考)
ES5 及更早版本的方法
请注意,这只会将
obj2
的所有属性添加到obj1
,如果您仍想使用未修改的obj1
,这可能不是您想要的。如果您使用的框架在您的原型上都是废话,那么您必须通过类似
hasOwnProperty
的检查来获得更好的体验,但该代码将适用于 99% 的情况。示例函数: