[英]Node.JS: Event Emmiter
function Auth() {
console.log('Created!')
}
Auth.prototype.authenticate = function () {
// do stuff
this.emit('completed')
}
util.inherits(Auth, EventEmitter)
如何在其他函数中调用Auth.emit('someEvent')? 例如:
function someOther () {
//do stuff
Auth.emit('event')
}
它抛出一个错误:
Auth.emit不是函数
您需要创建一个实例。
var myAuthObj = new Auth();
myAuthObj.authenticate(...);
原型上的方法是“实例”方法。 它们可以直接在对象的实例上调用。
您也可以创建“静态”方法(以不同的方式,它们实际上只是分配给名称空间对象的普通函数),但是它们不能使用this
或继承的对象,因为只有当您使用new
实例化实际对象时,这些方法才被放置到位。还有你的构造函数
您还需要将util.inherits()
移到原型分配的前面。 util.inherits()
语句替换了原型,因此,如果事后这样做,则将刚刚分配给原型的内容清除掉。 并且,您也应该调用父对象的构造函数。
function Auth() {
EventEmitter.call(this);
console.log('Created!')
}
util.inherits(Auth, EventEmitter);
Auth.prototype.authenticate = function () {
// do stuff
this.emit('completed')
}
因此,需要解决的三件事:
Auth.prototype
之前,请移动util.inherits()
。 EventEmitter.call(this)
添加到构造函数中以正确初始化基础对象 new Auth()
构造Auth对象的实例,并在该实例上调用方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.