jQuery 技术内幕》读书笔记(1)——总体架构

《jQuery 技术内幕》读书笔记(1)——总体架构

文中的代码来自 jquery 1.12.4

核心特性

  • 兼容主流浏览器
  • 具有独特的链式语法短小清晰的多功能接口
  • 具有高效灵活的 CSS 选择器, 并且可对 CSS 选择器进行扩展
  • 拥有便捷的插件扩展机制和丰富的插件

总体架构

jQuery 的模块可以分为 3 部分:入口模块、 底层支持模块、功能模块

jQuery 技术内幕》读书笔记(1)——总体架构

自调用匿名函数

(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 对象
    • 可以在压缩代码的时候进行优化
  • 要在自动用匿名函数的最后加上分号(;)