我有一个自定义 EventEmitter 对象,它在收到消息时发出。收到消息后,我会将其从对象发布到消息交换,该对象将使用从同一对象定义的回调。下面的交换函数示例:
function Exchange() {
this.events = {
published: function (data) {
console.log(data);
}
};
}
Exchange.prototype.publish = function (data) {
this.events.published(data);
};
在我的接收端,我有自定义 EventEmitter 来发出数据:
server.on('data', function (data) {
exchange.publish(data);
});
这行得通,但是由于exchange.publish
和侦听器使用相同的参数,我想使用:
server.on('data', exchange.publish);
这不起作用,因为方法this
内部的范围publish
发生变化,导致this.events
未定义。为什么会这样?