zoukankan      html  css  js  c++  java
  • jQuery1.6 jQuery.extend

    jQuery.extend = jQuery.fn.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" && !jQuery.isFunction(target) ) {目标对象的类型不是"object"或者"function"
    		target = {};
    	}
    	if ( length === i ) {//如果只有一个参数传递,扩展jQuery的本身,
    		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 ) {//防止死循环a{} b{x:a} $.extend(a,b);
    					continue;
    				}
    				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {//合并
                  //处理深度复制,如果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 !== undefined ) {
    					target[ name ] = copy;//直接复制
    				}
    			}
    		}
    	}
    	return target;//返回目标对象
    };
    例:
    var a={"height":1,"width":12,"location":{"X":2}};
    var b={"height":2,"width":12,"location":{"x":1,"y":1}};
    
    
    $.extend(a,b);//a={"height":2,"width":12,"location":{"x":1,"y":1}};
    $.extend(true,a,b)//深度复制a={"height":2,"width":12,"location":{"X":2,"x":1,"y":1}};
    $.extend{a}//扩展$自身

  • 相关阅读:
    表单高级和表格高级
    XHTML基础知识
    浅析JavaScript访问对象属性和方法及区别
    互联网盈利模式研习笔记之二:佣金与分成
    互联网盈利模式研习笔记之一:流量变现
    前端两年开发经验需要了解的常识!
    拖拽原理
    js中常见兼容性
    前端性能优化
    JS框架常识。
  • 原文地址:https://www.cnblogs.com/tellme/p/2159834.html
Copyright © 2011-2022 走看看