jQuery源码学习(1)- 整体架构

学习版本:jQuery2.0.3

学习博客链接:艾伦Aaronnuysoft

源码github地址:https://github.com/junzizaixi/jQuery-.git

1、整体架构

jQuery框架的核心就是从HTML文档中匹配元素并对其执行操作。

1.1自调用匿名函数

打开jQuery源码,首先你会看到这样的代码结构:

(function(window,undefined){
    //jQuery code
})(window);

a、这是一个自调用匿名函数。即在第一个括号内,创建一个匿名函数;第二个括号,起立即执行的作用。

b、通过这种方式定义的匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这点也是一个JS框架必须支持的功能,jQuery被应用在成千上万的javaScript程序中,必须确保jQuery创建的变量不能和导入他的程序所使用的变量发生冲突。

c、传入window的作用:通过传入window变量,使得window由全局变量变为局部变量,当在jQuery代码块中访问window时,不需要将作用域链回退到顶层作用域,这样可以更快的访问window;更重要的是,将window作为参数传入,可以在压缩代码时进行优化:可以看jQuery压缩后的代码:

(function(a,b){})(window);//window被优化为a

d、参数列表中undefined的作用:在自调用匿名函数的作用域内,确保undefined是真的未定义。因为经检验,undefined可能能够被重写,赋予新的值。(经测试,在IE中能重写,在firefox与chrome中不能重写)。

1.2 实现功能

按代码顺序排列,说明在自调用匿名函数当中实现了什么功能:

(function(){

(21,94) 定义变量和函数,赋值JQuery

(96,283)添加JQuery的一些方法和属性

(285,347) extend JQ的继承方法

(877,2856) Sizzle:复杂选择器的实现。

(2880,3042) Callbacks:回调对象:对函数的统一管理

(3043,3183) Deferred:延迟对象:对异步的统一管理

(3184,3295) Support:功能检测

(3308,3652) data():数据缓存

(3653,3797) queue():队列管理

(3803,4299) attr() prop() val() addClass()等,对元素属性的操作。

(4300,5128) on() trigger():时间操作的相关方法

(5140,6057) DOM操作:添加 删除 获取 包装 筛选。

(6058,6620) css():样式操作(包括处理浏览器的兼容)

(6621,7854) 提交数据的ajax() load() getJson()

(7855,8584) animate() 运动方法的实现

(8585,8792) offset() 位置和尺寸等方法

(8804,8821) Jq支持模块化的支持

(8826) window.JQuery=window.$=JQuery;

})();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值