jQuery技术内幕预览版.pdf1
2014-08-03 00:37
127 查看
第一章 总体构架
jQuery模块可以分为3部分:入口模块、底层支持模块和功能模块
![](http://images.cnitblog.com/i/602413/201408/021627274624130.png)
浏览器功能测试模块提供了针对不同浏览器功能和bug的测试结果,其它模块基于测试结果解决浏览器之间的兼容性问题
回调函数列表模块用于增强对回调函数的管理,支持添加、移除、触发、锁定、禁用回调函数功能
异步队列模块用于解耦异步任务和回调函数,为回调函数增加了状态,并提供了多个回调函数列表,支持传播任意同步或异步回调函数的成功或失败状态
数据缓存模块用于为DOM元素和JavaScript对象附加任意类型的数据
队列模块用于管理一组函数,支持函数的入队和出队操作确保函数按顺序执行,它基于数据缓存模块实现
在功能模块中,事件系统提供了统一的事件绑定、响应、手动触发和移除机制,它并没有将事件直接绑定到DOM元素上,而是基于数据缓存模块来管理事件
Ajax模块允许从服务器上直接加载数据,而不用刷新页面,它基于异步队列模块来管理和触发回调函数
动画模块用于向网页中添加动画效果,同样基于队列模块来管理和执行动画函数
属性操作模块用于HTML属性和DOM属性进行读取、设置和移除操作
DOM遍历模块用于在DOM树中遍历父元素、子元素和兄弟元素
DOM操作模块用于插入、移除、复制和替换DOM元素
样式操作模块用于获取计算样式或设置内联样式
坐标模块用于读取或设置DOM元素的文档坐标
尺寸模块用于获取DOM元素的高度和宽度
![](http://images.cnitblog.com/i/602413/201408/021654322584879.png)
自调用匿名函数:jQuery的所有代码都被包裹在一个立即执行的匿名函数中,这种结构称为“自调用匿名函数”,当浏览器加载完jQuery文件后,自调用匿名函数会立即开始执行,初始化各个模块
自调用匿名函数好处在于,创建了一个特殊的函数作用域,该代码不会和已有的同名函数、方法和变量以及第三方库冲突,在函数的最后,通过手动吧变量jQuery添加到window对象上,明确地使jQuery成为公开的全局变量,而其他部分将是私有的
自调用匿名函数还有其它写法
![](http://images.cnitblog.com/i/602413/201408/021711260403596.png)
第三种方法,可参考汤姆大叔的博客http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html
为什么要为自调用匿名函数设置参数window,并传入window对象?
通过传入window对象,可以使window对象变为局部变量,当jQuery代码块访问window对象时,不需要将作用域链回退到顶层作用域,从而更快地访问window对象,另外可以在压缩代码时进行优化
![](http://images.cnitblog.com/i/602413/201408/021719370089302.png)
为什么要为自调用匿名函数设置参数undefined?
特殊值undefined是window对象的一个属性
![](http://images.cnitblog.com/i/602413/201408/021726311496981.png)
把参数undefined作为局部变量使用,但又不传入任何值,可以缩短查找undefined时的作用域链,并且可以在压缩代码时优化,undefined会被压缩为b
还有一个重要原因是,通过这种方式确保参数undefined的值是undefined
![](http://images.cnitblog.com/i/602413/201408/021728504306263.png)
![](http://images.cnitblog.com/i/602413/201408/021728589466028.png)
最后一点:注意末尾的“;”号
jQuery模块可以分为3部分:入口模块、底层支持模块和功能模块
![](http://images.cnitblog.com/i/602413/201408/021627274624130.png)
浏览器功能测试模块提供了针对不同浏览器功能和bug的测试结果,其它模块基于测试结果解决浏览器之间的兼容性问题
回调函数列表模块用于增强对回调函数的管理,支持添加、移除、触发、锁定、禁用回调函数功能
异步队列模块用于解耦异步任务和回调函数,为回调函数增加了状态,并提供了多个回调函数列表,支持传播任意同步或异步回调函数的成功或失败状态
数据缓存模块用于为DOM元素和JavaScript对象附加任意类型的数据
队列模块用于管理一组函数,支持函数的入队和出队操作确保函数按顺序执行,它基于数据缓存模块实现
在功能模块中,事件系统提供了统一的事件绑定、响应、手动触发和移除机制,它并没有将事件直接绑定到DOM元素上,而是基于数据缓存模块来管理事件
Ajax模块允许从服务器上直接加载数据,而不用刷新页面,它基于异步队列模块来管理和触发回调函数
动画模块用于向网页中添加动画效果,同样基于队列模块来管理和执行动画函数
属性操作模块用于HTML属性和DOM属性进行读取、设置和移除操作
DOM遍历模块用于在DOM树中遍历父元素、子元素和兄弟元素
DOM操作模块用于插入、移除、复制和替换DOM元素
样式操作模块用于获取计算样式或设置内联样式
坐标模块用于读取或设置DOM元素的文档坐标
尺寸模块用于获取DOM元素的高度和宽度
![](http://images.cnitblog.com/i/602413/201408/021654322584879.png)
自调用匿名函数:jQuery的所有代码都被包裹在一个立即执行的匿名函数中,这种结构称为“自调用匿名函数”,当浏览器加载完jQuery文件后,自调用匿名函数会立即开始执行,初始化各个模块
自调用匿名函数好处在于,创建了一个特殊的函数作用域,该代码不会和已有的同名函数、方法和变量以及第三方库冲突,在函数的最后,通过手动吧变量jQuery添加到window对象上,明确地使jQuery成为公开的全局变量,而其他部分将是私有的
自调用匿名函数还有其它写法
![](http://images.cnitblog.com/i/602413/201408/021711260403596.png)
第三种方法,可参考汤姆大叔的博客http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html
为什么要为自调用匿名函数设置参数window,并传入window对象?
通过传入window对象,可以使window对象变为局部变量,当jQuery代码块访问window对象时,不需要将作用域链回退到顶层作用域,从而更快地访问window对象,另外可以在压缩代码时进行优化
![](http://images.cnitblog.com/i/602413/201408/021719370089302.png)
为什么要为自调用匿名函数设置参数undefined?
特殊值undefined是window对象的一个属性
![](http://images.cnitblog.com/i/602413/201408/021726311496981.png)
把参数undefined作为局部变量使用,但又不传入任何值,可以缩短查找undefined时的作用域链,并且可以在压缩代码时优化,undefined会被压缩为b
还有一个重要原因是,通过这种方式确保参数undefined的值是undefined
![](http://images.cnitblog.com/i/602413/201408/021728504306263.png)
![](http://images.cnitblog.com/i/602413/201408/021728589466028.png)
最后一点:注意末尾的“;”号
相关文章推荐
- jQuery技术内幕预览版.pdf3
- jQuery技术内幕预览版.pdf2
- VB.NET 技术内幕(奋斗的小鸟)_PDF 电子书
- ADO.NET2.0技术内幕/微软技术丛书(奋斗的小鸟)_PDF 电子书
- jQuery技术内幕电子版4
- MySQL 技术内幕:InnoDB存储引擎pdf
- 【备忘】 HADOOP技术内幕 PDF 下载
- 【jquery】 【jQuery技术内幕】阅读笔记 一
- jQuery技术内幕 深入解析jQuery架构设计与实现原理
- Android技术内幕 系统卷 pdf
- ADO.net技术内幕(奋斗的小鸟)_PDF 电子书
- jQuery技术内幕电子版5
- jQuery技术内幕之总体架构与初始化函数
- 深入分析Java Web技术内幕pdf
- VC++技术内幕(第四版)笔记(1~2章)
- 整合PDF和Java技术
- 嵌入式BootLoader技术内幕(一)
- COM技术内幕学习笔记(2)
- VC++技术内幕(第四版)笔记(第4章)
- (摘抄)VC技术内幕笔记