Jquery 2.0.3 源码解析
20. JQuery 入口函数
(function(window, undefined ){
})(window,undefined);
-
1.匿名函数执行 jquery : 节省内存 ;
-
2.window 传参: 减少查找次数,提高效率,不需要逐级向上查找,直接查找 window ;
-
3.undefined 传参: 抑制 undefined 的出现,提高代码的持久性,防止 undefined 在应用程序中的传播 ;
-
Tip:
在全局(window)情况下undefined 不可改写,但是在函数中可以被改写,故在 jquery 中需要定义undefined,防止被篡改 ;
01. 0021-0094 Jquery 中的变量
// Jquery 中的核心函数(我们常用 $ jQuery() )
jQuery = function( selector, context ) {
// 返回一个 jqery 对象
return new jQuery.fn.init( selector, context, rootjQuery );
}
02. 0096 - 263 JQ 面向对象方式封装构造对象
03. 0285 - 0347 extend : JQ 继承方法
04. 0349 - 0817 jQuery.extend() 扩展的工具方法
function extend(){
/* 例:
$().css() // jquery 对象的方法
$.trim() // jquery 中的静态方法 ——> jquery 工具方法
*/
}
05. 0847 - 2586 sizzle : 复杂选择器实现(确定你选择的选择器)—— 独立模块、可偷
// 复杂:选择元素对子集、子集的子集、子集的兄弟元素等的选择方法
06. 2880 - 3042 Callbacks() : 回调对象的实现 ——> 通过回调对象对函数进行统一管理
// 函数管理:函数太多,
function callbacks(){
var cb = $.Callbacks();
function f1(){alert(1)}
function f2(){alert(2)}
cb.add(f1); // 添加f1函数
cb.add(f2); // 添加f2函数
cb.fire(); // 同时执行:f1、f2 两个函数
cd.remove(f1); // 删除f1函数
}
07. 3043 - 3183 Deferred : 延迟对象 ——> 对异步的统一管理;
function deferred(){
// 定时器、ajax、等异步操作的统一管理
// 实现以下功能
/*
setTimeout(function(){
alert(1); // 先弹
},1000);
alert(2); // 后弹
*/
// 实现以下功能
var dfd = $.Deferred(); // 返回 Deferred 对象
setTimeout(function(){
alert(1); // 先弹
dfd.resolve(); // 优先执行
},1000);
// 延迟执行
dfd.done(function(){ // 将 函数 存储到 dfd 对象中,当触发dfd对象的 resolve() 方法时,执行该函数
alert(2); // 后弹
})
}
08. 3184 - 3295 support : 功能检测功能(通过功能判断浏览器)
09. 3308 - 3652 data() : jquery 中的数据缓存
function data(){
// 添加静态变量
$('#div').data(name);
// 添加字符串
$('#div').data('name');
// 不建议添加对象,可能会出现内存泄露的问题 —— jquery 缓存的挂载机制
}
10. 3653 - 3797 queue() : 队列管理(入队)——先进先出
function queue(){
// 入队 —— 在写运动时,可能会用到队列
// 将三个动画加载如对象中 —— 逐步执行
$('#div').animation({left:100px}); // 先执行
$('#div').animation({top:100px}); // 在执行
$('#div').animation({width:100px}); // 最后执行
}
function dequeue(){
// 出队列 —— 最先添加的最先出
}
11. 3803 - 4299 attr() 、 prop() 、val() 、 addClass() …… : 对元素的属性操作
12. 4300 - 5128 on() 、 trigger() …… : 事件操作、触发等的相关操作
13. 5140 - 6057 DOM 操作:增、删、改、查、、包装 等 ……
14. 6058 - 6620 css 方法:对样式的操作、处理 ( 样式的兼容性、写法等)
15. 6621 - 7854 提交的数据 && Ajax 功能的实现:跨域、load、script 等
16. 7855 - 8584 animate() : 动画操作(show()、hide()、fadeIN()、fadeOut()等)
17. 8585 - 8792 位置 && 尺寸:offset() ……
18. 8804 - 8821 jquery 支持模块化的模式 —— 多兼容
19. 8825 - 8827 Jquery 对外提供接口
// 将 JQuery 添加给 window 对象,并可以使用 $ 符号来进行 JQuery 调用;
if ( typeof window === "object" && typeof window.document === "object" ) {
window.jQuery = window.$ = jQuery;
}