jQuery的 $.fn.extend和 $.extend的区别和使用

jQuery为开发插件提拱了两个方法,分别是:jQuery.fn.extend(object)和jQuery.extend(object)
jQuery.extend(object):用于扩展jQuery类本身,为jQuery类添加新的方法,即可以通过 $.functionName()调用的方法。还可以将两个或更多对象的内容合并到第一个对象。
jQuery.fn.extend(object):用于给jQuery对象添加方法,即可以通过 $(选择器).functionName()调用的方法。

jQuery.fn = jQuery.prototype = {
   init: function( selector, context ) {
      //……
   }
};

通过上面的一段代码可以知道 jQuery.fn = jQuery.prototype,prototype是函数的的属性,本质是函数的原型对象。




    
    JQuery插件
    
    
    




// plug.js

(function () {
    $.fn.extend({
        alertWhileClick:function(){
            $(this).click(function(){
                alert($(this).val());
            });
        }
    });

    $.extend({
        add:function(a,b){return a+b;}
    });

})(jQuery);

jQuery.extend()合并对象

jQuery.extend( target [, object1 ] [, objectN ] )

当提供两个或多个对象给$.extend(),对象的所有属性都添加到目标对象(target参数)。

jQuery.extend( [deep ], target, object1 [, objectN ] )

deep
类型: Boolean
如果是true,合并成为递归(又叫做深拷贝)。

1.合并两个对象,并修改第一个对象




    


结果
{“apple”:0,“banana”:{“price”:200},“cherry”:97,“durian”:100}
2.采用递归方式合并两个对象,并修改第一个对象




    


结果
{“apple”:0,“banana”:{“weight”:52,“price”:200},“cherry”:97,“durian”:100}
3.合并 defaults 和 options 对象,并且不修改 defaults 对象




    


结果
defaults – {“validate”:false,“limit”:5,“name”:“foo”}
options – {“validate”:true,“name”:“bar”}
settings – {“validate”:true,“limit”:5,“name”:“bar”}

你可能感兴趣的:(jQuery的 $.fn.extend和 $.extend的区别和使用)