第一章 总体构架

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

浏览器功能测试模块提供了针对不同浏览器功能和bug的测试结果,其它模块基于测试结果解决浏览器之间的兼容性问题

回调函数列表模块用于增强对回调函数的管理,支持添加、移除、触发、锁定、禁用回调函数功能

异步队列模块用于解耦异步任务和回调函数,为回调函数增加了状态,并提供了多个回调函数列表,支持传播任意同步或异步回调函数的成功或失败状态

数据缓存模块用于为DOM元素和JavaScript对象附加任意类型的数据

队列模块用于管理一组函数,支持函数的入队和出队操作确保函数按顺序执行,它基于数据缓存模块实现

在功能模块中,事件系统提供了统一的事件绑定、响应、手动触发和移除机制,它并没有将事件直接绑定到DOM元素上,而是基于数据缓存模块来管理事件

Ajax模块允许从服务器上直接加载数据,而不用刷新页面,它基于异步队列模块来管理和触发回调函数

动画模块用于向网页中添加动画效果,同样基于队列模块来管理和执行动画函数

属性操作模块用于HTML属性和DOM属性进行读取、设置和移除操作

DOM遍历模块用于在DOM树中遍历父元素、子元素和兄弟元素

DOM操作模块用于插入、移除、复制和替换DOM元素

样式操作模块用于获取计算样式或设置内联样式

坐标模块用于读取或设置DOM元素的文档坐标

尺寸模块用于获取DOM元素的高度和宽度

自调用匿名函数:jQuery的所有代码都被包裹在一个立即执行的匿名函数中,这种结构称为“自调用匿名函数”,当浏览器加载完jQuery文件后,自调用匿名函数会立即开始执行,初始化各个模块

自调用匿名函数好处在于,创建了一个特殊的函数作用域,该代码不会和已有的同名函数、方法和变量以及第三方库冲突,在函数的最后,通过手动吧变量jQuery添加到window对象上,明确地使jQuery成为公开的全局变量,而其他部分将是私有的

自调用匿名函数还有其它写法

第三种方法,可参考汤姆大叔的博客http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html

为什么要为自调用匿名函数设置参数window,并传入window对象?

通过传入window对象,可以使window对象变为局部变量,当jQuery代码块访问window对象时,不需要将作用域链回退到顶层作用域,从而更快地访问window对象,另外可以在压缩代码时进行优化

为什么要为自调用匿名函数设置参数undefined?

特殊值undefined是window对象的一个属性

把参数undefined作为局部变量使用,但又不传入任何值,可以缩短查找undefined时的作用域链,并且可以在压缩代码时优化,undefined会被压缩为b

还有一个重要原因是,通过这种方式确保参数undefined的值是undefined

最后一点:注意末尾的“;”号

jQuery技术内幕预览版.pdf1的更多相关文章

  1. jQuery技术内幕预览版.pdf3

    jQuery.fn.init(selector,context,rootjQuery):构造函数 jQuery.fn.init() 负责解析参数 selector 和 context 的类型,并执行相 ...

  2. jQuery技术内幕预览版.pdf2

    第二章 构造jQuery对象 jQuery对象是一个类数组对象,含有连续的整型属性.length属性和大量的jQuery方法,$()是jQuery()的缩写 构造函数jQuery() 如果调用构造函数 ...

  3. Windows 10 技术预览版9926 “未知源”引起系统休眠后自启的解决办法

    问题的由来: 自从安装上了最新发布的Windows 10 ,使用起来有诸多的改进:无论是重绘的图标还是通知消息中心的整合还是更智能的OneDrive客户端都使得工作起来非常愉悦. 不过笔者这两天频繁遇 ...

  4. 微软推出首个Microsoft Azure Stack技术预览版

    Mike Neil,微软公司企业云副总裁 怀着对于提高业务灵活性.加速创新的期待,很多企业正在向云平台迅速迁移.伴随着这样的趋势,我们也见证了微软智能云Azure业务在全球市场的快速增长--每个月近1 ...

  5. 熊猫猪新系统测试之一:Windows 10 技术预览版

    话说本猫不用windows很多年了呀!不过看到微软最新的Windows10还是手痒了,想安装体验一把.于是第一时间下载,并做成usb引导安装镜像,在08年的老台式机上安装尝鲜鸟.下载ISO和安装方法这 ...

  6. 微软发布Azure Stack第一个技术预览版

    为了提升商业灵敏度和加快创新步伐,各个企业都在迅速地转向云服务.在微软,我们已经见到微软智能云Azure的飞速发展和使用,每月我们都有近十万的新增订阅量.然而,我们也了解到还有很多企业在完全移到公有云 ...

  7. 熊猫猪新系统測试之中的一个:Windows 10 技术预览版

    话说本猫不用windows非常多年了呀! 只是看到微软最新的Windows10还是手痒了.想安装体验一把. 于是第一时间下载,并做成usb引导安装镜像,在08年的老台式机上安装尝鲜鸟.下载ISO和安装 ...

  8. 【官方免费】Apple Silicon M1 + Parallels 16技术预览版 + Win 10 arm64

    期待了好久,终于能用pd运行win10了,其实也就想写个c++,mac上配置个c++编译器太麻烦了.. 步骤: 打开 https://my.parallels.com/desktop/beta,这里下 ...

  9. 获取WIN10技术预览版

    说明 这是一款预发行软件 在进行商业发行之前,我们可能会对 Windows Technical Preview 进行大量修改. Microsoft 不对此处提供的信息作任何明示或默示的担保. 有些产品 ...

随机推荐

  1. Linux的进程优先级

    Linux的进程优先级 为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情.因为有的进程相对重要,而有的进程则没那么重 ...

  2. js获取任意元素到页面的距离

    function getPos(obj){ var pos={left:0,top:0} while(obj){ pos.left+=obj.offsetLeft; pos.top+=obj.offs ...

  3. 【转】PFILE和SPFILE介绍

    原文:http://blog.sina.com.cn/s/blog_77bba23901017xcl.html 一.PFILE Pfile(Parameter File,参数文件)是基于文本格式的参数 ...

  4. thinkPHP add、save无法添加、修改不起作用

    案例:数据库新添加一字段,修改值不成功.解决方案:将Runtime/Data/_fields/下面的字段缓存删除,或者直接删除整个Runtime文件也是可以的分析:由于Thinkphp,采用字段缓存机 ...

  5. web2py相关-------------------------------(一)初遇

    在第一次换工作的时候,希望转行 做编程,就面试了很多家,很多人问我 懂不懂html 书写,我非常诚实的告诉他们不会. 当然那时我很天真的认为,只要自己愿意学习这些都不是问题,事实证明人的学习能力是很快 ...

  6. 面试题:m个长度为n的ordered array,求top k 个 数字

    package com.sinaWeibo.interview; import java.util.Comparator; import java.util.Iterator; import java ...

  7. 在Django中使用Mako模板

    用了一个月后,终于忍受不了Django的模板了.主要原因是模板内不能运行原生的python语句,所以用起来总感觉被人绑住手脚,遍历个字典都要搞半天. 所以决定用第三方的模板.查了一下,django用的 ...

  8. c# 如何通过反射 获取\设置属性值、

    //定义类public class MyClass{public int Property1 { get; set; }}static void Main(){MyClass tmp_Class = ...

  9. 一个matlab数字图像处理程序的解释

    clc; %clc是清除command window里的内容 clear all; %clear是清除workspace里的变量 close all; %close all来关闭所有已经打开的图像窗口 ...

  10. 从xib加载文件

    一般自定义View, 如果从xib加载文件, 定义一个类方法, 返回xib + (instancetype)dropdown { return [[[NSBundle mainBundle] load ...