为了账号安全,请及时绑定邮箱和手机立即绑定
这节没看懂,mark一下
Observable是被观察者,里面的callbacks数组中的每一个都是一个观察者,每一个元素都是函数形式
constructor: ajQuery
我们知道类就是一个构造器,那么原型上就有一constructor属性是指向这个构造器的,换句话说,调用constructor就等于是调用ajQuery
jQuery对这个用法是有点隐秘的
在pushStack方法中就用了
var ret = jQuery.merge(this.constructor(), elems);
构造一个新的对象,this.constructor() 其实等同于重新创建一个jQuery对象
不懂啊 这一节!1、
var $$ = ajQuery = function(selector) {
//把原型上的init作为构造器
return new ajQuery.fn.init( selector );
}
这个明明就有new啊

还有constructor: ajQuery 为什么要这么做?这么做了 就可以不用new了?
把相似的属性或者相似的方法,集中在一起,然后对这些相似的属性的值,或者相似方法的返回值,进行统一的处理,节约代码,就是所谓的“接口的抽象合并”
4.特别注意jQuery.prototype={
constructor:jQuery
},这个constructr属性通过前面的赋值,也变成了jQuery.fn.init.prototype的属性,从而把Query.fn.init对象,变成的jQuery对象(只要明白constructr的意思)。---------也就是无new得到jQuery对象
理解:1.$(),jQuery()是执行一个函数,$和jQuery是函数名称,这个函数返回的是一个对象,所以里面是一个new表达式,但是名字不能是自己,否则无限循环。2.既然不是自己,其实可以理解为jQuery()返回的不是jQuery对象,而是jQuery.fn.init(一个名字而已)对象。3.但是为了统一和方法/属性的共用(理解原型链),jQUuery这样处理,jQuery.fn.init.prototype = jQuery.prototype.
后面还有4.............不能超过3000字
理解这个,大家必须先去理解,原型,原型链.......推荐“深入理解JavaScript系列”
讲解的真好
@vfan140 没有不对, options === 'memory' 是判定当前是memory的Callback 时, 就将data保存在memory中,以便下面的
if (memory) {
firingStart = start; //获取最后一值
_fire(memory);
}
这段代码使用,达到add回调函数时就执行这个回调函数的作用, 你说的那个写法是jQ源码里面的方式,其实道理一样的。JQ对传入的参数多进行了一步操作
代码很明显,options可能是对象,需要深拷贝deep
(options = arguments[i]) != null这边为何要赋值给options再操作呢?为何不直接操作arguments[i]
好抽象啊!

已采纳回答 / 艾伦Aaron
首先,回调函数是从异步队列分离出来的,那么就是无缝贴合Deferred的设计可以查看下Deferred模块会有这么一段代码<...code...>这里设计到规范的接口,done | fail | progress方法都是通过jQuery.Callba...
factory那边定义的?
课程须知
源码的阅读不是一蹴而就的,需要大家有一定的功底,比如jQuery的基础运用以及API的熟悉度,除此之外要有牢固的javascript、DOM、CSS的基础功底,甚至还需要理解常见的设计模式、数据结构等等。当然大家也不要被这些给吓住了,理解,总是需要一种慢慢的学习过程。
老师告诉你能学到什么?
通过本课程的学习,您可以由浅入深地剖析jQuery库的设计与实现。 其中我们围绕的重心: 1、设计理念 2、结构组织 3、接口设计 4、模式运用 5、场景套用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消