第一次寫,寫的不對的請指正 backbone.js中的Event實現了自定義事件。自定義事件就是一個對象的鍵值對,key為事件名,value為一個function數組。在backbone這個對象中有一個內置的對象_events保存著所有的事件 所有Events的方法都是通過eventsApi調用的。 ...
第一次寫,寫的不對的請指正
backbone.js中的Event實現了自定義事件。自定義事件就是一個對象的鍵值對,key為事件名,value為一個function數組。在backbone這個對象中有一個內置的對象_events保存著所有的事件
View Code所有Events的方法都是通過eventsApi調用的。
eventsApi = function(iteratee, events, name, callback, opts){...}
分別傳入offApi,onceMap,triggerApi作為eventsApi的第一個參數實現對性的off,once,trigger。其中on和listenTo則是通過internalOn方法調用的eventsApi,internalOn方法則是通過第五個參數來區分on和listenTo。internalOn方法的目的就是保護第五個參數,提高安全性。
這裡有3個屬性this._events={eventName:[]}和this._listeningTo={obj._listenId:{obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0}}和this._listeners={obj._listenId:{obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0}},這三個為map對象。Events這個類最終實現了對這3個對象的操作。
註:Events.listenTo = function(obj, name, callback){...}這個方法調用一次操作了this._events,this._listeningTo和obj._listeners三個屬性