function extend() {
// copy reference to target object
var target = arguments[0] || {},
i = 1,
length = arguments.length,
deep = false,
options;
// Handle a deep copy situation
if (target.constructor == Boolean) {
deep = target;
target = arguments[1] || {};
// skip the boolean and the target
i = 2;
}
// Handle case when target is a string or something (possible in deep copy)
if (typeof target != "object" && typeof target != "function")
target = {};
// extend jQuery itself if only one argument is passed
if (length == 1) {
target = this;
i = 0;
}
for (; i < length; i++) {
// Only deal with non-null/undefined values
if ((options = arguments[i]) != null) {
// Extend the base object
for (var name in options) {
// Prevent never-ending loop
if (target === options[name])
continue;
if (deep && options[name] && typeof options[name] == "object" && target[name] && !options[name].nodeType) {
// Recurse if we're merging object values
target[name] = extend(target[name], options[name]);
} else if (options[name] != undefined) {
// Don't bring in undefined values
target[name] = options[name];
}
}
}
}
// Return the modified object
return target;
};
沒有留言:
張貼留言