第一次寫,寫的不對的請指正數組
backbone.js中的Event實現了自定義事件。自定義事件就是一個對象的鍵值對,key爲事件名,value爲一個function數組。在backbone這個對象中有一個內置的對象_events保存着全部的事件安全
全部Events的方法都是經過eventsApi調用的。this
eventsApi = function(iteratee, events, name, callback, opts){...}spa
分別傳入offApi,onceMap,triggerApi做爲eventsApi的第一個參數實現對性的off,once,trigger。其中on和listenTo則是經過internalOn方法調用的eventsApi,internalOn方法則是經過第五個參數來區分on和listenTo。internalOn方法的目的就是保護第五個參數,提升安全性。code
這裏有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三個屬性blog