您的位置:首页 > Web前端 > JQuery

jQuery.extend

2015-10-18 22:45 549 查看
扩展对象的属性,代码如下:

jQuery.extend = jQuery.fn.extend = function(){
var options, name, src, copy, copyIsArray, clone,
target = arguments[0] || {},
//处理arguments数组的下标
i = 1,
length = arguments.length,
deep = false;

//如果第一个参数是布尔变量的话
if( typeof target === "boolean"){
deep = target;
//总是确保target是对象
target = arguments[ i ] || {};

i++;
}

//非对象,非函数的情形
if( typeof target !== "object" && !jQuery.isFunction( target ) ){
target = {};
}

//首参数布尔是,i = 2, 非布尔时, i = 1
//如果这时 i 与参数的长度相等。
if( i === length ){
target = this;
i--;
}

for( ; i < length; i++ ){
// 仅处理非空,定义的值
if( (options = arguments[i] ) != null ){

// Extend the base object
for( name in options ){
src = target[ name ];
copy = options[ name ];

//阻止无限循环
if( target === copy ){
continue;
}

if( deep && copy && ( jQuery.isPlainObject( copy )
|| (copyIsArray = jQuery.isArray(copy ) ))) {

if( copyIsArray ){
copyIsArray = false;
//确保扩展对象是数组
clone = src && jQuery.isArray( src ) ? src : [];
} else {
//确保扩展对象是对象。
clone = src && jQuery.isPlainObject( src ) ? src : {};
}

target[ name ] = jQuery.extend( deep, clone, copy );
//不要把未定义的值进行赋值
} else if( copy !== undefiend ){
target[ name ] = copy;
}
}
}
}

return target;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: