Object.defineProperty( Object, "deepAssign", { "value": function callee(target, source) { Object.keys(source).forEach(function (key) { var value = source[key]; if (target[key] === undefined) { target[key] = value; return; } if (value instanceof Object) { if (value instanceof Array) { value.forEach(function (entry) { target[key].push(entry); }); return; } callee(target[key], value); return; } target[key] = value; }); return target; } } );