觉得老师对memory的解释有些歧义,看完了这节课,我觉得 本例中的memory变量是保存了当前的fire函数的参数,每次添加一个新的观察者函数,就用当前的memory变量作为参数调用这个添加的观察者函数一次。
2016-11-21
memory = options === 'memory' && data; 我一直以为memory的最终结果为true或者false,现在我才发现原来我没有弄明白 与 的真谛! 假如 options === ‘memory’ 的话,memory = data。 其余情况 memory = false
2016-11-21
随着后面课程的学习,发现jQuery的实现方式跟我想的不一样啊,我的实现思路就是实现一个被观察者池,为每一个被观察者命名;而jQuery则是在函数内部定义一个观察者数组,然后使用闭包的方式返回一个对象;如果用我的方法的话,还得额外检测名字是否重复。问世间是否有山比此山更高,一山还比一山高啊
2016-11-21
今天又看了一遍,发现以前对这节课的理解是错的!! 第19行, arguments.callee 指的是setTimeout内的函数,指的不是Aaron !! 大家可以添加一句console.log(arguments.callee)试试。
另外我一直思考,为啥要用setTimeout函数,百度得到了这个答案:settimeout的作用机制其实是把函数加入到全局(window)的空间里的任务队列
另外我一直思考,为啥要用setTimeout函数,百度得到了这个答案:settimeout的作用机制其实是把函数加入到全局(window)的空间里的任务队列
2016-11-20
@javaeye 观察不仔细啊! 明明是 callee 不是 call!
callee返回正在执行的函数本身的引用,它是arguments的一个属性!
callee返回正在执行的函数本身的引用,它是arguments的一个属性!
2016-11-20
@小姜姜姜姜 'arguments.callee(List) 这句话可以换成 Aaron(List,callback) 这样的话就需要每次执行25毫秒'
建议不要换,因为如果换了的话,以后我们需要对函数重命名的话,那我们就得改两处。
建议不要换,因为如果换了的话,以后我们需要对函数重命名的话,那我们就得改两处。
2016-11-20
将观察者都搞在一个集合中,当被观察者发生变化,就直接找到这个集合,并运行其中的函数。
再扩展一下:
可能有很多被观察者,每个被观察者都对应一个观察者集合,所以我们需要一个‘池’ 来存储这些集合。那么 键值对 的格式就很符合。 { 被观察者1:[观察者集合] , 被观察者2:[观察者集合]....}
再扩展一下:
可能有很多被观察者,每个被观察者都对应一个观察者集合,所以我们需要一个‘池’ 来存储这些集合。那么 键值对 的格式就很符合。 { 被观察者1:[观察者集合] , 被观察者2:[观察者集合]....}
2016-11-19