覺得老師對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