backbone-1.3.3源码解析-----------Event

第一次写,写的不对的请指正

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三个属性

原文地址:https://www.cnblogs.com/wangwei1314/p/5558654.html