【发布时间】:2014-08-15 11:19:37
【问题描述】:
我正在学习节点:
查看 EventEmitter 内部,默认情况下,它通过将发射器作为 this 传递给事件监听器来执行回调,这样在您的事件监听器函数中,this 指的是EventEmitter 对象。
我对这种情绪有些困惑,对象如何将自己注册为侦听器并保留对其自身属性的引用?
考虑这个问题:
Meeting.prototype.recordStatement = function(name, statement) {
this.minutes.push(name + " said " + statement);
};
使用这样的模式为自定义对象创建实例方法是非常标准的,但这不会作为 EventEmitter 的侦听器:如果我将会议的 recordStatement 实例方法附加到发出的 statements 事件比如说,一个人/发射者,我失去了对 recordStatement 侦听器范围内的会议实例属性的访问权限,因此对于上面的示例,关于来自该人的语句事件,this.minutes 是未定义的。
我想我可以在这里使用一个中间对象,它可以保存对会议实例的引用,但是,看起来很麻烦。
我应该如何为此设计?谢谢!
【问题讨论】:
标签: node.js scope this eventemitter