0

まず第一に、リアクター パターンを扱うのは初めてだと言いたいです。自分の持っている知識でいろいろ試してみましたが、うまくいきませんでした。これまでの私のスクリプトは次のとおりです。

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');

そこで、新しいリアクター オブジェクトを作成し、それにイベント リスナーを追加して、イベントをディスパッチします。しかし、コールバック関数では、「これ」を「テスト」オブジェクトにしたいと考えています。

4

1 に答える 1