jQuery 技术内幕》读书笔记(1)——总体架构
《jQuery 技术内幕》读书笔记(1)——总体架构
文中的代码来自 jquery 1.12.4
核心特性
- 兼容主流浏览器
- 具有独特的链式语法和短小清晰的多功能接口
- 具有高效灵活的 CSS 选择器, 并且可对 CSS 选择器进行扩展
- 拥有便捷的插件扩展机制和丰富的插件
总体架构
jQuery 的模块可以分为 3 部分:入口模块、 底层支持模块、功能模块
自调用匿名函数
(function( global, factory ) {
}( typeof window !== undefined ? window : this, function( window, noGlobal ) {
var jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context )
}
if(!noGlobal) {
window.jQuery = window.$ = jQuery
}
return jQuery
}));
- 为什么要创建这样一个自调用匿名函数?
- 创建一个特殊的函数作用域,该作用域中的代码不会和已有的同名函数、方法和变量以及第三方库冲突。
- 在这个自调用匿名函数的最后,通过手动把变量 jQuery 添加到 window 对象上,明确地使变量 jQuery 成为公开的全局变量,而其他的部分将是私有的
- 为什么要传入window对象
- 当在 自调用函数内部访问 window 对象时,不需要将作用域链回退到顶层作用域,从而可以更快的访问 window 对象
- 可以在压缩代码的时候进行优化
- 要在自动用匿名函数的最后加上分号(;)