jquery 源码学习 – jquery的闭包

时间:2022-05-21 08:46:11

jquery源码版本2.0.3,下载地址:http://www.jq22.com/jquery/jquery-2.0.3.zip

这篇jquery源码学习是作为秒味课堂的jQuery源码分析的学习笔记。

什么是闭包?

闭包是建立一个独立的作用域,并让外部能够访问函数内部变量和对象的方法。

闭包的作用

闭包可以创建一个不被外部干扰的封闭的作用域,保证全局作用域不被污染,并且可以定义私有、公有的变量和方法函数。

闭包中被调用的变量其生命周期保存到该闭包的生命周期被结束为止。

闭包示例

伪代码:

//创建一个闭包,外部无法直接访问内部变量和方法函数。
var count = (function(){
var number = 0;
//指定外部可以访问的方法函数
return function(){
//被调用的变量不会被内存回收销毁,生命周期和闭包生命周期一致
return number++;
}
})();

count();//1
count();//2
count();//3

jquery的闭包

//因为js是基于原型的语言,所以在传参中直接传入window对象可以减少js在原型链中查找window对象的时间
//在js中undefined既不是保留字也不是关键字,所以为了防止外部定义了个名字叫undefined的变量干扰到jquery的代码,所以jquery将undefined作为传参传入。
(function( window, undefined ) {

function jQuery(){
}

//其他代码片段
if ( typeof window === "object" && typeof window.document === "object" ) {
//将jQuery实例化方法挂载到window对象下面,那么就可以在外部访问到jQuery对象了
window.jQuery = window.$ = jQuery;
}
})(window);
console.log(window.jQuery);
console.log(window.$);
console.log($);

以上三种方式都可以调用到jQuery方法