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