Skip to content

Instantly share code, notes, and snippets.

@FGRibreau
Forked from joseanpg/extend_and_merge.js
Created August 15, 2012 23:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save FGRibreau/3364561 to your computer and use it in GitHub Desktop.
Save FGRibreau/3364561 to your computer and use it in GitHub Desktop.
Merge as it should be ( == $.extend(true, {}, ...))
function myextend(/* args */){
var o = {}
, args = Array.prototype.slice.call(arguments)
, obj = args.shift()
, src = args.shift();
for (var p in src){
if (src.hasOwnProperty(p)){
if (hasOwn.call(obj,p) && typeof obj[p] === 'object' && obj[p] !== null) {
o[p] = myextend(obj[p],src[p]);
}
else {
o[p] = src[p];
}
}
}
return args.length > 0 ? myextend.apply(null, [o].concat(args)) : o;
}
/*
var a = {};
var b = {a:'Hello', b:{}};
var c = {a:'Bye', b:{f:{d:2}}, c:1};
var r = myextend(a, b, c);
alert(JSON.stringify(r,null,0)); //{"a":"Bye","b":{"f":{"d":2}},"c":1}
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment