jquery源码学习,一——jquery结构概述以及如何合适的暴露全局变量?

jQuery 源码学习是对js的能力提升很有帮助的一个方法,废话不说,我们来开始学习啦

我们学习的源码是jquery-2.0.3已经不支持IE6,7,8了,因为可以少学很多hack和兼容的方法。

jquery-2.0.3的代码结构如下

首先最外层为一个闭包, 代码执行的最后一句为window.$ = window.jquery = jquery 让闭包中的变量暴露倒全局中。

传参传入window是为了便于压缩

传入undefined是为了undifined被修改,他是window的属性,可以被修改的。

(function(window,undefined){

//(21,93) 提供了一些变量

//(96,283) 给jq添加一些对象和方法

//(285,347) extend : jq的继承方法,方便扩展

//(349,817) jquery.extend : 扩展了一些工具方法

//(877,2856) Sizzle : 复杂选择器的实现

//(2880,3042) callBakcs : 回调对象 : 函数的一个统一管理

//(3034,3183) Deferred : 延时对象 : 对异步统一管理

//(3184,3295) Support : 功能检测 : 

//(3308,3652) data() : 数据缓存机制

//(3653,3797) queye()队列管理,入队

//(3803,) 对元素属性的操作

//(4300,5128) on, triggle 事件操作的相关方法

//(5140,6057) DOM操作 : 添加删除获取包装

//(6058,6620) css() : 样式的操作

//(6621,7854) 提交数据和ajax() : ajax() load() getJson()

//(7855,8584) animate() : 运动的实现

//(8585,8792) offset() : 位置和尺寸的方法

//(8804,8821) Jq支持模块化的模式

//(8826) window.jquery = window.$ = jquery

        function JQuery(){
        }
        function jQuery(){
                return new JQuery( )
        }
        window.$ = window.jquery = jQuery; //提供对外接口;
})(window)