jQuery的立即执行函数如下,其常用于第三方库,好处在于隔离作用域,任何一个第三方库都会存在大量的变量和函数,为了避免变量污染(命名冲突),开发者们想到的解决办法就是使用立即执行函数。

立即执行函数的两种常见形式:( function(){…} )()和( function (){…} () )

通过定义一个匿名函数,创建了一个新的函数作用域,相当于创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏污染全局的命名空间。此时若是想访问全局对象,将全局对象以参数形式传进去即可

其执行时间在dom之前

(function (a, b) {
                alert(a + b);
            })(1, 2)

2.jquery库中的$.fn.extend

jQuery.fn === jQuery.prototype

$.fn.method()=function(){}的调用把方法扩展到了对象的prototype上,所以实例化一个jQuery对象的时候,它就具有了这些方法。

$.extend({})  ,为jQuery类添加方法,可以理解为扩展静态方法

 

<div id="myDiv"></div>
 
(function($){
  $.fn.extend({
    test:function(){
       alert($(this).attr('id'));
    }
})
})(jQuery)
 
$('#myDiv').test();
打印出 : myDiv