首页 > 代码库 > 一.jQuery源码解析之总体架构

一.jQuery源码解析之总体架构

 1 (function (window, undefined) {
 2             //构建jQuery对象
 3             var document = window.document,
 4                 navigator = window.navigator,
 5                 location = window.location;
 6             var jQuery = (function () {
 7                 var jQuery = function (selector, context) {
 8                     return new jQuery.fn.init(selector, context, rootjQuery);
 9                 },
10                 _jQuery = window.jQuery;
11                 //............................
12                 //............................                  
13                 return jQuery; //981行
14             })();
15             //工具方法:Utilities;我在jQuery源码中没有发现是哪一块,如果有发现的.可以告诉我一下
16             //回调函数列表 Callbacks
17             //异步队列 Deferred
18             //浏览器功能测试 Support
19             //数据缓存  Cache
20             //属性操作  Attributes
21             //队列 Queue
22             //事件系统 Event
23             //选择器 Sizzle
24             //Dom遍历 Traversing
25             //Dom操作 Manipulation
26             //样式操作 CSS
27             //异步请求 Ajax
28             //动画 Effects
29             //坐标 Offset. 尺寸Dimensions
30             window.jQuery = window.$ = jQuery;
31         })(window);

1.这个就是jQuery源码的结构了.个人觉得还是相当的清晰和有条理的.
2.jQuery的整个最外层就是一个自调用的匿名函数,这样就可以创建一个闭包.
该闭包中的各种变量,函数就不会和闭包外的变量和函数发生影响,确保了jQuery的独立性,安全性.
3最后一句代码:window.jQuery = window.$ = jQuery;
则是定义了一个全局变量jQuery和$.并且吧私有变量jQuery的引用赋给了这个全局变量.
4.将最大的对象window当做实参传递到函数中,使得window变成了局部变量,
可以大大的缩短查找window的查找时间,同样节省资源.
5,第二个参数undefined,是一个形参,在实际执行的时候,没有获得参数赋值,
那么系统就会给他自动赋值成undefined.这样在jQuery的闭包中确保了undefined值的真时性,
因为undefined在jQuery的外面有可能被篡改掉.尽管这个篡改的结果,各种浏览器不一样.