基于另外2个创建对象

Nic*_*DIA 5 javascript

可能重复:
如何动态合并两个JavaScript对象的属性?

我有两个对象a和b定义如下:

a = { 
  a: 1, 
  af: function() { console.log(this.a) }, 
};
b = { 
  b: 2, 
  bf: function() { console.log(this.b) },
};
Run Code Online (Sandbox Code Playgroud)

我现在想要的是创建另一个将获得a和b属性的对象,如下所示:

c = { 
  a: 1, 
  af: function() { console.log(this.a) },
  b: 2, 
  bf: function() { console.log(this.b) },
}
Run Code Online (Sandbox Code Playgroud)

请注意,a和b需要保持不变.

知道如何做到这一点?

Ada*_*kis 3

您可以对 a 和 b 执行 for in 循环,并将所有hasOwn属性复制到新对象。

var c = {};
for (var p in a)
    if(a.hasOwnProperty(p))
         c[p] = a[p];
for (var p in b)
    if(b.hasOwnProperty(p))
         c[p] = b[p];
Run Code Online (Sandbox Code Playgroud)

演示版


或者,如果您碰巧使用 jQuery,您可以这样做:

var c = $.extend({}, a, b);
Run Code Online (Sandbox Code Playgroud)