【发布时间】:2020-02-13 10:27:32
【问题描述】:
我正在学习 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();
【问题讨论】:
标签: node.js prototype ecmascript-5 eventemitter