节点util.inherits和这个问题

我正试图解决一个节点服务器中的“这个问题”。 如果我不使用worker.stuff.bind(worker)replace下面的worker.stuff ,它不起作用。

有没有办法在工人类本身添加bind 每次我使用它的function都很无聊。

这是服务器:

 var app = require("express")() , Worker = require('./worker') , worker = new Worker(); app.get("/stuff", worker.stuff); worker.on('done', function () { console.log('done') }); app.listen(3000); 

这是工人:

 function Worker(options) {} require('util').inherits(Worker, require('events').EventEmitter); Worker.prototype.stuff = function (req, res) { this.emit('done'); res.send(); } module.exports = Worker; 

这是我能想到的最好的:

 function Worker(options) { var self = this; this.stuff = function (req, res) { self.emit('done'); res.send(); } } require('util').inherits(Worker, require('events').EventEmitter); module.exports = Worker; 

在构造函数中定义所有的方法,并引用闭包的self而不是this

我可能咬了子弹,并根据需要使用bind