以下是核心javascript中的扩展功能。它与jQuery中的$ .extend()相同。它用于更新/修改JavaScript对象。
var extend= function() {
var options,
name,
src,
copy,
copyIsArray,
clone,
target = arguments[0] || {},
i = 1,
length = arguments.length,
deep = false;
if (typeof target === "boolean") {
deep = target;
target = arguments[1] || {};
i = 2;
}
if (typeof target !== "object" && !isFunction(target)) {
target = {};
}
if (length === i) {
target = this;
--i;
}
for (; i < length; i++) {
if ((options = arguments[i]) != null) {
for (name in options) {
src = target[name];
copy = options[name];
if (target === copy) {
continue;
}
if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {
if (copyIsArray) {
copyIsArray = false;
clone = src && isArray(src) ? src: [];
} else {
clone = src && isPlainObject(src) ? src: {};
}
target[name] = extend(deep, clone, copy);
} else if (copy !== undefined) {
target[name] = copy;
}
}
}
}
return target;
}
如下所示:
extend(curConfig, newConfig);
因为它是用于修改具有新对象的所有地方的标准函数。我想了解并分析这个功能。
任何人都可以用例子解释(或者如果可能的话用jsfiddle演示)?
提前致谢!
答案 0 :(得分:1)
由于函数定义没有显示任何参数可以传递,但使用它时需要任意数量的参数。那么,这个函数的行为如何?
它使用arguments object。
有什么方法可以称呼它?
你传递一个对象来扩展它和任意数量的对象来扩展它。