从async.series调用的原型函数中使用“this”

我想通过使用“this”来访问一个variables,但是由于我的函数被async.series调用, async.series上下文发生了变化。 这是我的代码示例:)

 var search = function(url) { this.music = url; } search.prototype.test = function() { async.series({ songId: this.getSongId }, function(err, results) {}); }; search.prototype.getSongId = function(callback) { console.log(this.music) // Prints 'undefined' } module.exports = search; 

当我在做

 var engine = require('./lib/index.js'); var search = new engine('test'); search.test(); 

我得到“未定义”。 有没有办法将“这个”绑定到async.series函数,或者我应该只是将我的值作为parameter passing?

正如@Pointy指出的,.bind()实际上是正确的方法。 经过这里的一些研究是我如何解决我的问题。

 search.prototype.test = function() { async.series({ songId: this.getSongId.bind(this) //binding "this" here! }, function(err, results) {}); }; 

谢谢 :)