标签:
扩展对象的属性,代码如下:
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; };
标签:
原文地址:http://www.cnblogs.com/branches/p/4890606.html