Javascript 基于其他两个对象创建一个对象

Javascript 基于其他两个对象创建一个对象,javascript,Javascript,可能重复: 我有两个对象a和b的定义如下: a = { a: 1, af: function() { console.log(this.a) }, }; b = { b: 2, bf: function() { console.log(this.b) }, }; c = { a: 1, af: function() { console.log(this.a) }, b: 2, bf: function() { console.log(this.

可能重复:

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

a = { 
  a: 1, 
  af: function() { console.log(this.a) }, 
};
b = { 
  b: 2, 
  bf: function() { console.log(this.b) },
};
c = { 
  a: 1, 
  af: function() { console.log(this.a) },
  b: 2, 
  bf: function() { console.log(this.b) },
}
我现在想要的是创建另一个对象,它将获得a和b的属性,如下所示:

a = { 
  a: 1, 
  af: function() { console.log(this.a) }, 
};
b = { 
  b: 2, 
  bf: function() { console.log(this.b) },
};
c = { 
  a: 1, 
  af: function() { console.log(this.a) },
  b: 2, 
  bf: function() { console.log(this.b) },
}
请注意,a和b需要保持不变


你知道怎么做吗?

你可以为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];


或者,如果您碰巧使用jQuery,您可以执行以下操作:

var c = $.extend({}, a, b);
vari,c={};
对于a中的(i){if(a.hasOwnProperty(i)){c[i]=a[i];}
对于(b中的i){if(b.hasOwnProperty(i)){c[i]=b[i];}
您可以将此功能抽象为自己的功能:

函数扩展(){
变量i,j,x,o=(参数[0]|{});
对于(i=1;i
所以现在我们可以像

var c = Object.create( null );

extend( c ).with( a );
extend( c ).with( b );


免责声明:提供的代码假设我们处于ES5或ES5 shimed环境中!

jQuery解决方案非常棒!@NicolasBADIA-是的,$。extend非常棒