jquery 源码学习

149 阅读2分钟

一、整体结构:

(21-94) 定义了函数和变量

(96-286) 给JQ添加方法和属性

(285-347) extend:jq的继承方法

(349-817) jQuery.extend(),扩展一些工具方法

(877-2856) sizzle:复杂选择器的实现

(2880-3042)callbacks:回调对象:对函数的统一管理

(3043-3183) deferred:延迟对象:对异步的统一管理(定时器,ajax,添加<script>标签,dom加载)

(3184-3295) support :功能检测

(3308-3652)data():数据缓存

(3653-3797) queue(): 队列管理

(3803-4299) attr() prop() val() addClass() 等对元素属性的操作

(4300-5128) on() trigger() 事件操作相关方法

(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.$=$

二、分块

整个框架是匿名函数自调,这样有自己的作用域,与外面的函数不冲突,把wiondow作为参数传到函数里,一是可以提高查找速度,虽然不传window,但作为顶级对象,也可以查找到window,但是这样会逐级查找,最后才找到window,把window传进来会提升查找速度;二是可以把window压缩。undefined作为参数传进来,可以防止被改变,因为undefined不是保留字和关键字,只是window的一个属性,在低版本可以被改变

rootJquery 是$(\document)的赋值,定义变量好维护,可压缩,