0
下面是核心javascript中的擴展函數。它與jQuery中的$ .extend()相同。它用於更新/修改JavaScript對象。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);
因爲它是用來到處修改與新對象的標準功能。我想了解和分析這個功能。
- 由於函數定義不顯示任何參數可以傳遞,但在使用它時可以使用任意數量的參數。那麼,這個函數的行爲如何?
- 此功能有什麼不同用途。有什麼方法可以調用它?
- 如果5個對象參數傳遞給函數,則第一個參數將是目標,剩餘的將是源。對 ?如果對象被覆蓋或複製,如果不存在?
任何人都可以用示例解釋(或者如果可能的話用jsfiddle演示)?
在此先感謝!
+1。感謝昆汀。 「你傳遞一個對象來擴展和任意數量的對象來擴展它」你能說一點嗎?請。看我的問題3 – 2012-03-29 06:01:31