jQuery学习笔记之总体架构
先来看代码:
(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的外面有可能被篡改掉.尽管这个篡改的结果,各种浏览器不一样.