jQuery源码分析-01总体架构
1、自调用匿名函数
(function( window, undefined ) { // jquery code })(window);
创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。
传入window,使得window全局变量变成局部变量,同时将window作为参数传入,可以在压缩代码时进行优化。
(function(a,b){})(window); // window 被优化为 a
在 自调用匿名函数 的作用域内,确保undefined是真的未定义。因为undefined能够被重写,赋予新的值。
源码最后的分号:为了更好的兼容性和健壮性,请在每行代码后加上分号并养成习惯。
2、总体架构
在自调用函数里面都实现了什么功能
(function( window, undefined ) { // 构造jQuery对象 var jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); } // 工具函数 Utilities // 异步队列 Deferred // 浏览器测试 Support // 数据缓存 Data // 队列 queue // 属性操作 Attribute // 事件处理 Event // 选择器 Sizzle // DOM遍历 // DOM操作 // CSS操作 // 异步请求 Ajax // 动画 FX // 坐标和大小 window.jQuery = window.$ = jQuery; })(window);