在NodeJS中使用类函数作为事件侦听器

时间:2015-03-25 14:26:29

标签: javascript node.js class javascript-events listener

我有以下代码:

context
    .on( 'hangup', this.handleHangup );

在类构造函数和

PlayMessage.prototype.handleHangup = function() {
    log.callout.info( "Call [%s]: Client hungup.", this.row.get( 'id' ) );
    this.endCall(); // Get out of here
}

作为班级的一项功能。该类称为PlayMessage。

我收到错误说:

  

events.js:130       抛出TypeError('listener必须是函数');

谈论我粘贴在上面的context.on(...)行。

我应该如何将类函数用作侦听器?

2 个答案:

答案 0 :(得分:1)

一般来说,在将函数传递给依赖于绑定上下文(this)的事件处理程序(如原型方法)时,必须在传递之前手动绑定上下文。

context
    .on( 'hangup', this.handleHangup.bind(this) );

这可确保this中的handleHangup值是"类"的实例。你期待。

More info on the Function method .bind()

答案 1 :(得分:0)

问题在于我试图声明一个没有“new”的类,所以没有原型函数存在。这对我来说是一次了不起的学习经历。