jQuery源码研究学习笔记(二)

jQuery总体架构:
jQuery模块可以大致分为三部分:入口模块、底层支持模块、功能模块。

参考jQuery技术内幕解析

jQuery总体架构图

jquery源码总体架构:

(function(window,undefined){

        //构造jQuery对象
        var jQuery = (function(){
            var jQuery = function(selector,context){
                return new jQuery.fn.init(selector,context,rootjQuery);
            }
            return jQuery;

        })();

        //工具方法 Utilities
        //回调函数列表 Callbacks Object
        //异步队列 Deferred Object
        //浏览器功能测试 Support
        //数据缓存
        //队列 Queue
        //属性操作 Attributes
        //事件系统 Events
        //选择器 Sizzle
        //DOM遍历操作
        //样式操作
        //异步请求 Ajax
        //动画 Effects
        //坐标、尺寸

        window.jQuery = window.$ = jQuery;

    }) (window);

从源码库中可以看出,源码是使用自调用匿名函数,所有的代码都被包裹在了一个立即执行的匿名函数表达式。当浏览器加载完jquery文件后,自调用匿名函数会立即开始执行,初始化jQuery的各个模块

(function(window,undefined){

        var jQuery =...
        //...

        window.jQuery = window.$ = jQuery;

    }) (window);

通过创建这样一个自调用匿名函数,创建了一个特殊的函数作用域,该作用域中的代码不会和已有的同名函数、方法和变量以及第三方库有冲突。避免了破坏和污染全局变量以至于影响到其他代码。

  1. 通过手动把变量jquery添加到window对象上,明确地使变量jQuery成为公开的全局变量,而其他的部分将是私有的,之所以设置参数window,可以使window对象变为局部变量,从而缩小查找作用域链,不需要回退到顶部,更快地访问window对象,另外,将window对象作为参数传入,可以在压缩代码时进行优化。
  2. 设置参数undefined,因为undefined是window对象的一个属性,通过把参数undefined作为局部变量使用,但是又不传入任何值,可以缩短查找undefined时的作用域链,并且可以在压缩代码时进行优化。更重要的原因是,通过这种方式可以确保参数undefined的值是undefined,因为undefined有可能会被重写为新的值
  3. 自调用匿名函数最后使用分号(;),通常在javascript中,如果语句分别放置在不同的行中,则分号是可选的,但是对于自调用匿名函数来说,在之前或之后省略分号都可能会引起语法错误,所以在使用自调用匿名函数时,最好不要省略自调用匿名函数之前和之后的分号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端岚枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值