Вероятно, самый быстрый, эффективный и более общий способ - это (вы можете объединить любое количество объектов и даже скопировать в первый -> назначить):
function object_merge(){
for (var i=1; i<arguments.length; i++)
for (var a in arguments[i])
arguments[0][a] = arguments[i][a];
return arguments[0];
}
Это также позволяет вам изменять первый объект, переданный по ссылке. Если вы этого не хотите, но хотите иметь полностью новый объект, содержащий все свойства, вы можете передать {} в качестве первого аргумента.
var object1={a:1,b:2};
var object2={c:3,d:4};
var object3={d:5,e:6};
var combined_object=object_merge(object1,object2,object3);
Combined_object и object1 оба содержат свойства object1, object2, object3.
var object1={a:1,b:2};
var object2={c:3,d:4};
var object3={d:5,e:6};
var combined_object=object_merge({},object1,object2,object3);
В этом случае Combined_object содержит свойства object1, object2, object3, но object1 не изменяется.
Проверьте здесь: https://jsfiddle.net/ppwovxey/1/
Примечание: объекты JavaScript передаются по ссылке.