Skip to content

Instantly share code, notes, and snippets.

@melalj
Created December 29, 2016 20:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save melalj/07644cde019006f37d71a3d3a9e75869 to your computer and use it in GitHub Desktop.
Save melalj/07644cde019006f37d71a3d3a9e75869 to your computer and use it in GitHub Desktop.
function extendRecursive() {
const dst = {};
let src;
const args = [].splice.call(arguments, 0);
const toString = ({}).toString;
while (args.length > 0) {
src = args.splice(0, 1)[0];
if (toString.call(src) === '[object Object]') {
Object.keys(src).forEach(p => {
if (toString.call(src[p]) === '[object Object]') {
dst[p] = extendRecursive(dst[p] || {}, src[p]);
} else {
dst[p] = src[p];
}
});
}
}
return dst;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment