我有两个JavaScript对象
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<div ng-app="myApp">
<div ng-controller="SuperController as s">
<my-directive pics="s.pics">
</my-directive>
</div>
</div>
我想连接两者并希望得到这个结果
a = {"aa" : "foo"}
b = {"b" : "bar"}
在普通的javascript中执行此操作的最简单方法是什么。我没有使用任何外部库,如jquery或下划线。
答案 0 :(得分:3)
使用Object.assign
,此处为documentation。
var mergedObject = Object.assign(a, b);
请注意Object.assign
将从左向右合并,因此如果稍后在参数列表中添加,则会覆盖任何相同的键。
答案 1 :(得分:2)
var o1 = {"aa" : "foo" };
var o2 = { "b" : "bar" };
var obj = Object.assign(o1, o2);
答案 2 :(得分:2)
理想情况下,正如前两个答案中所建议的那样,使用Object.assign
是最好的选择,除非浏览器支持另有规定,但MDN documentation提供了ES5 polyfill。
if (typeof Object.assign != 'function') {
Object.assign = function(target) {
'use strict';
if (target == null) {
throw new TypeError('Cannot convert undefined or null to object');
}
target = Object(target);
for (var index = 1; index < arguments.length; index++) {
var source = arguments[index];
if (source != null) {
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
}
return target;
};
}