理解jQuery的$.extend()、$.fn和$.fn.extend()

300 阅读1分钟

jQuery为开发插件提拱了两个方法,分别是:

jQuery.fn.extend();

jQuery.extend();

//底层实现的大概方法是
// function extend(target, source) {// for (const key in source) {// target[key] = source[key]// }// }
        //extend(obj, zz)

1. jQuery.fn = jQuery.prototype 2. $.extend(object)

为jQuery类添加类方法,可以理解为添加静态方法

$.extend({
min: function(a, b) { return a < b ? a : b; },
max: function(a, b) { return a > b ? a : b; }
});
$.min(2,3); //  2 
$.max(4,5); //  5

3.$.extend( target, object1, [objectN])

用一个或多个其他对象来扩展一个对象,返回被扩展的对象

var obj1 = { result: false, num: 5, name: "foo" }; 
var obj2 = { result: true, name: "bar" }; $.extend(obj1, obj2); //obj1 == { result: true, num: 5, name: "bar" }

4. $.fn.extend(object)

对jQuery.prototype进得扩展,为jQuery类添加方法(函数)。jQuery类的实例可以使用这个函数。

$.fn.extend({          
    alertClick:function() {            
          $(this).click(function(){                 
                 alert($(this));           
           });           
     }       
});       
$("button").alertClick(); // 页面上为:   

$("button")为一个jQuery实例,当它调用成员方法 alertClick后,便实现了扩展,每次被点击时它就会弹出。

5. jQuery.fn.extend = jQuery.prototype.extend

拓展一个对象到jQuery的 prototype里去就是插件机制。·