为了账号安全,请及时绑定邮箱和手机立即绑定
觉得老师对memory的解释有些歧义,看完了这节课,我觉得 本例中的memory变量是保存了当前的fire函数的参数,每次添加一个新的观察者函数,就用当前的memory变量作为参数调用这个添加的观察者函数一次。
memory = options === 'memory' && data; 我一直以为memory的最终结果为true或者false,现在我才发现原来我没有弄明白 与 的真谛! 假如 options === ‘memory’ 的话,memory = data。 其余情况 memory = false
随着后面课程的学习,发现jQuery的实现方式跟我想的不一样啊,我的实现思路就是实现一个被观察者池,为每一个被观察者命名;而jQuery则是在函数内部定义一个观察者数组,然后使用闭包的方式返回一个对象;如果用我的方法的话,还得额外检测名字是否重复。问世间是否有山比此山更高,一山还比一山高啊
随着我们的使用,optionsCache会存入所有的可能的参数组合。
今天又看了一遍,发现以前对这节课的理解是错的!! 第19行, arguments.callee 指的是setTimeout内的函数,指的不是Aaron !! 大家可以添加一句console.log(arguments.callee)试试。
另外我一直思考,为啥要用setTimeout函数,百度得到了这个答案:settimeout的作用机制其实是把函数加入到全局(window)的空间里的任务队列
貌似1.8版本之后,load就抛弃了·····只剩下ajax的load了
@javaeye 观察不仔细啊! 明明是 callee 不是 call!
callee返回正在执行的函数本身的引用,它是arguments的一个属性!
@小姜姜姜姜 'arguments.callee(List) 这句话可以换成 Aaron(List,callback) 这样的话就需要每次执行25毫秒'
建议不要换,因为如果换了的话,以后我们需要对函数重命名的话,那我们就得改两处。
很精妙!self 存在外部引用 + 闭包
将观察者都搞在一个集合中,当被观察者发生变化,就直接找到这个集合,并运行其中的函数。
再扩展一下:
可能有很多被观察者,每个被观察者都对应一个观察者集合,所以我们需要一个‘池’ 来存储这些集合。那么 键值对 的格式就很符合。 { 被观察者1:[观察者集合] , 被观察者2:[观察者集合]....}
回调可以实现异步
关于slice感觉有点误解大家,并不是因为匹配的结果是数组,而是jquery原型上封装了slice方法
“除此之外类一的所有方法都是拷贝到当前实例对象上。类二则是要通过scope连接到原型链上查找,这样就无形之中要多一层作用域链的查找了” 这句话啥意思
$.data()和.data()方法虽然大体的意思一样,但是2个接口在处理上却有差别,mark。
javascript对象与DOM对象的相互引用易产生内存泄漏。
为了避免内存泄漏,我们要尽量避免 引用数据(这里的引用数据可以说是javascript对象) 直接依附在DOM对象上。
课程须知
源码的阅读不是一蹴而就的,需要大家有一定的功底,比如jQuery的基础运用以及API的熟悉度,除此之外要有牢固的javascript、DOM、CSS的基础功底,甚至还需要理解常见的设计模式、数据结构等等。当然大家也不要被这些给吓住了,理解,总是需要一种慢慢的学习过程。
老师告诉你能学到什么?
通过本课程的学习,您可以由浅入深地剖析jQuery库的设计与实现。 其中我们围绕的重心: 1、设计理念 2、结构组织 3、接口设计 4、模式运用 5、场景套用

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消