We have this code:
class Example {
constructor(num) {
this.a = num;
this.eventEmitter = null;
}
doSomething() {
// This doesn't work because 'this' will refer to the emitter.
this.a += 1;
}
registerEvents(eventEmitter){
this.eventEmitter = eventEmitter;
eventEmitter.on('event', this.doSomething);
}
}
and we want to bind it to an event emitter, like this:
function ExampleUser() {
const EventEmitter = require('events');
eventEmitter = new EventEmitter();
var reactor = new Example(1);
reactor.registerEvents(eventEmitter);
eventEmitter.emit('event');
}
The problem is, that when doSomething()
is called, just like supposed, the this refers to the emitter, not to the Example object. Therefore, it cannot update this.a
as we would like.
Help?