You can do simply this :
var c = {};
for (var key in a) {
c[key] = a[key];
}
for (var key in b) {
c[key] = b[key];
}
If you want to do a deep merging (assuming you don't want to copy the functions and prototypes), you can use this :
function goclone(source) {
if (Object.prototype.toString.call(source)==='[object Array]') {
var clone = [];
for (var i=0; i<source.length; i++) {
if (source[i]) clone[i] = goclone(source[i]);
}
return clone;
} else if (typeof(source)=="object") {
var clone = {};
for (var prop in source) {
if (source[prop]) {
var firstChar = prop.charAt(0);
clone[prop] = goclone(source[prop]);
}
}
return clone;
} else {
return source;
}
}
var c = {};
for (var key in a) {
c[key] = goclone(a[key]);
}
for (var key in b) {
c[key] = goclone(b[key]);
}
But frankly I never saw the use for a deep merging in javascript...