JQuery源码解析

JQuery源码 2 / 结构梳理

2018-02-28  本文已影响0人  羊烊羴

下面是对JQuery的整体结构的梳理,之后的代码解析也都会按照这个格式依次向下走

21-94 定义了一些变量和函数

96-283 为JQuery对象添加的属性和方法

285-347 JQuery.extend()方法

349-817 扩展了一些工具方法,通过JQuery.extend()

在JQuery中为我们体中、功了两种操作方法

第一种是$().text()类型

第二种是$.trim()

第一种方法叫做JQuery的实例方法,只能JQuery对象使用

第二种方法也叫做工具类方法,工具类方法可以直接用于原生对象上,可以视作是函数$上拓展的方法,工具类方法可视作是JQuery的底层方法,JQuery很多实例方法都是通过调用工具类方法来实现的

877-2856 完成sizzle(选择器)功能,JQuery的sizzle是独立的,可以单独下载

2880-3042 完成了callback方法,JQuery的回调对象,用于统一管理函数

fn=$.callvack();
fn_1=function(){alert(1)};
fn_2=function(){alert(2)};
fn.add(fn_1);
fn.add(fn_2);
fn.fire();

3043-3183 完成$.Deferred()方法,用于对异步函数进行统一管理

var def=$.Deferred();
setimeout(function(){
  alert(1);
  def.resolve();
  return def;
})
def.done(function(){
  alert(2)
})

3184-3295 完成support用于功能检测的方法,例如我们在兼容浏览器时去检测浏览器是否存在某个功能,是否需要对某个功能做兼容,在最开始时我们是通过去判断浏览器的版本来做兼容

navigator.userAgent

但是随着浏览器的迭代的不断加快,我们开始使用功能检测,例如我们在写一个checkbox/radio时,它的默认值是'on',但是在老版本浏览中该默认值是 ' '

support.checkOn = input.value !== "";

3308-3652 data()方法的实现,该方法主要用于数据的缓存

3652-3797 实现queue,该方法主要用于队列 管理,可以理解为对函数执行顺序的管理

$('div').animate({'top':'1000'});
$('div').animate({'left':'1000'});
//那么在页面中执行的动画顺序一定是元素先向上移动,然后向左移动,在JQuery中实现该效果就是在开始时使用queue将动画排序,在运行时让动画按照顺序入队,在执行完成之后调用deququ让其出队后再继续执行下一个动画

3803-4299 实现如attr()、val()等元素属性操作方法

4300-5128 on()、trigger()等事件操作的实现

5140-6057 DOM操作方法的实现,如append()、find()

6058-6620 样式操作方法的实现,如css()

6621-7854 提交数据和AJAX方法的实现,包括load()等

7855-8584 运动方法的实现,主要animate(),包括如show()等

8588-8792 offset()等位置与尺寸的方法

8804-8821 JQuery支持模块化的模式

上一篇 下一篇

猜你喜欢

热点阅读