首先,我想说这是我第一次使用反应器模式。我用我所拥有的知识尝试了一切,但没有任何成功。到目前为止,这是我的脚本:
function Reactor(){
this.events = {};
}
Reactor.prototype.registerEvent = function(eventName){
this.events[eventName] = {name: eventName, callbacks: []};
};
Reactor.prototype.dispatchEvent = function(eventName, eventArgs){
for(var i in this.events[eventName].callbacks) {
this.events[eventName].callbacks[i](eventArgs);
}
};
Reactor.prototype.addEventListener = function(eventName, callback){
if(typeof(this.events[eventName]) == 'undefined') this.registerEvent(eventName);
return this.events[eventName].callbacks.push(callback) - 1;
};
并测试脚本我有这个
var test = new Reactor();
test.addEventListener('ping', function() {
console.log(this); //I want this to be the 'test' object
});
test.dispatchEvent('ping');
所以我创建了一个新的反应器对象,向它添加了一个事件监听器,然后调度事件。但在回调函数中,我希望“this”成为“test”对象。