Я изучаю JavaScript / Nodejs, и я решил начать с ES5, прежде чем смотреть на ES6. Я смотрю на прототип наследования и EventEmitter.
Я хочу расширить EventEmitter чем-то простым, мой пример кода ниже. Однако я получаю сообщение об ошибке:
this.emit ('messageRead', message);
TypeError: this.emit не является функцией
Что я делаю не так?
var EventEmitter = require('events').EventEmitter;
var MyEmitter = function() {
EventEmitter.call(this);
this.messages = []
}
MyEmitter.prototype = Object.create(EventEmitter.prototype);
MyEmitter.prototype.constructor = MyEmitter;
MyEmitter.prototype.addMessage = function(message) {
this.messages.push(message)
this.emit('messageAdded', message);
return this;
}
MyEmitter.prototype.readMessages = function() {
this.messages.forEach(function(message){
this.emit('messageRead', message);
});
return this;
}
var emitter1 = new MyEmitter();
emitter1
.addMessage('hello')
.addMessage('goodbye')
.on('messageAdded', function(message) { console.log('message added: ' + message)})
.on('messageRead', function(message) { console.log('message read: ' + message)})
.readMessages();