jquery版本:jQuery-2.0.3.js
立即执行函数
- 定义:
在立即执行函数中书写的任何变量和函数在外边都是找不到的
原因是希望把函数和变量都局部的,防止和其它的代码冲突,所以得对外提供接口,才可以找到这些方法(function(){ var a = 10; function $(){ alert(a); } })();
- 对外提供接口的方法:
(function(){ var a = 10; function $(){ alert(a); } window.$ = $; })(); $();
- 在
jQuery
代码中:// 传入undefined的目的: /* 1. 下面这段代码,在IE10中是undefined,在更低版本浏览器中,就是10 2. 为了防止有人在外边对undefined进行更改,所以传一个undefined进去,那么,如果要找undefined,沿着作用域链,可以找到正确的undefined <script> var undefined = 10; alert(undefined); </script> */ (function( window, undefined ) { if ( typeof window === "object" && typeof window.document === "object" ) { window.jQuery = window.$ = jQuery; } })( window ); // 传入参数window的好处: // 1. 如果不写window也是可以的,按照作用域链往上找,太长了,所以写在参数里面,直接一下就可以找到 // 2. 如果进行代码压缩的话,可以把window写成w,减少代码的数量
代码结构
- 21 -> 94 定义了一些变量和函数
- 从 96 -> 283 是给JQ对象,添加一些方法和属性
- 从 285 -> 347 是JQ的继承方法
- 从 349 -> 817 是扩展一些工具方法(扩展静态属性和静态方法)
- 从 877 -> 2856 Sizzle: 复杂选择器的实现
- 从 2880 -> 3042 Callbacks: 回调对象: 对函数的统一管理
- 从 3043 -> 3183 Deferred: 延迟对象: 对异步的统一管理
- (3184, 3259) 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(): ajax() load() getJson()
- (7855, 8584) animate(): 运动的方法
- (8804, 8821) JQ支持模块化的模式
源码详细信息的查看
#13335
是查看详细介绍的编号(网站)