zl程序教程

您现在的位置是:首页 >  前端

当前栏目

jQuery学习笔记之总体架构

2023-06-13 09:15:27 时间

先来看代码:

复制代码代码如下:

(function(window,undefined){
           //构建jQuery对象
           vardocument=window.document,
               navigator=window.navigator,
               location=window.location;
           varjQuery=(function(){
               varjQuery=function(selector,context){
                   returnnewjQuery.fn.init(selector,context,rootjQuery);
               },
               _jQuery=window.jQuery;
               //............................
               //............................                 
               returnjQuery;//981行
           })();
           //工具方法:Utilities;我在jQuery源码中没有发现是哪一块,如果有发现的.可以告诉我一下
           //回调函数列表Callbacks
           //异步队列Deferred
           //浏览器功能测试Support
           //数据缓存 Cache
           //属性操作 Attributes
           //队列Queue
           //事件系统Event
           //选择器Sizzle
           //Dom遍历Traversing
           //Dom操作Manipulation
           //样式操作CSS
           //异步请求Ajax
           //动画Effects
           //坐标Offset.尺寸Dimensions
           window.jQuery=window.$=jQuery;
       })(window);

1.这个就是jQuery源码的结构了.个人觉得还是相当的清晰和有条理的.

2.jQuery的整个最外层就是一个自调用的匿名函数,这样就可以创建一个闭包.该闭包中的各种变量,函数就不会和闭包外的变量和函数发生影响,确保了jQuery的独立性,安全性.

3最后一句代码:window.jQuery=window.$=jQuery;则是定义了一个全局变量jQuery和$.并且吧私有变量jQuery的引用赋给了这个全局变量.

4.将最大的对象window当做实参传递到函数中,使得window变成了局部变量,可以大大的缩短查找window的查找时间,同样节省资源.

5,第二个参数undefined,是一个形参,在实际执行的时候,没有获得参数赋值,那么系统就会给他自动赋值成undefined.这样在jQuery的闭包中确保了undefined值的真时性,因为undefined在jQuery的外面有可能被篡改掉.尽管这个篡改的结果,各种浏览器不一样.