Skip to content

Instantly share code, notes, and snippets.

@yanhaijing
Last active August 29, 2015 14:07
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 yanhaijing/944600665fc0fa4481a9 to your computer and use it in GitHub Desktop.
Save yanhaijing/944600665fc0fa4481a9 to your computer and use it in GitHub Desktop.
深度扩展函数,来自jquery
function extendDeep() {
var target = arguments[0] || {};
var arrs = slice.call(arguments, 1);
var len = arrs.length;
var copyIsArr;
for (var i = 0; i < len; i++) {
var arr = arrs[i];
for (var name in arr) {
var src = target[name];
var copy = arr[name];
//避免无限循环
if (target === copy) {
continue;
}
if (copy && (isObj(copy) || (copyIsArr = isArr(copy)))) {
if (copyIsArr) {
copyIsArr = false;
var clone = src && isArr(src) ? src : [];
} else {
var clone = src && isObj(src) ? src : {};
}
target[ name ] = extendDeep(clone, copy);
} else if (typeof copy !== 'undefined'){
target[name] = copy;
}
}
}
return target;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment