jQuery.extend

extend

  有人批评(好像是fins)prototype,说它是一个extend支撑半边天。对于Jquery而言,也是一个extend支持了一边天。Jquery提供了extend对jquery进行扩展。jQuery.fn.extend是对jquery对象进行扩展。jQuery.extend是对jquery的静态方法进行扩展。它们是同一个方法。

 

jQuery.extend = jQuery.fn.extend = function() {
  
  
var target = arguments[0|| {}// 第一个参数是目标
  i = 1, length = arguments.length, deep = false, options;
  
  
if (target.constructor == Boolean) {// 第一个参数是bool型的
    deep = target;// 深度copy
    target = arguments[1|| {};// target指向第二个参数
    i = 2;
  }

  
  
// target 是string 型的或?
  if (typeof target != "object" && typeof target != "function")
    target 
= {};
  
  
if (length == i) {// 只有一个参数?或deep copy 时,两个参数
    target = this;// 目标为this
    --i;
  }

  
  
for (;i < length; i++)
    
if ((options = arguments[i]) != null)
  
      
for (var name in options) {
       
var src = target[name], copy = options[name];
       
if (target === copy)// 防止死循环
         continue;
       
// 深度copy处理,最深为元素
       if (deep && copy && typeof copy == "object" && !copy.nodeType)
         target[name] 
= jQuery.extend(deep, src
             
|| (copy.length != null ? [] : {}), copy);
       
else if (copy !== undefined)// 直接copy
         target[name] = copy;
  
      }

  
  
return target;
}
;
posted @ 2009-02-20 16:18  麦飞  阅读(990)  评论(0编辑  收藏  举报