JavaScript的 – 如何保存一个引用“this”访问使用原型模式的命名函数callback

我有问题得到一个JavaScript对象实现与callback中的原型模式。 callback来自我在对象中使用的第三方组件。 第三方对象连接到消息总线。

下面的伪代码显示了我是如何开始的(真正的代码正在工作)

var mb = require('MsgBus') TestClass = function() { this.messagebus = new mb.MsgBus(); this.messagebus.connect(function(err) { if(err) console.log("Error connecting"); else console.log("Connected"); }); } 

但是,如果callback报告错误,我想要自动重试连接。 如果发现“this.messagebus.connection”的if(err)块,我不能再添加另外一行,因为我必须为连接callback添加另一个匿名方法,并且它会继续。 所以,我想把callback逻辑分解成一个这样的命名函数

 var mb = require('MsgBus') TestClass = function() { this.messagebus = new mb.MsgBus(); this.messagebus.connect(msgBusConnectCallback); } function msgBusConnectCallback(err) { if(err) this???.messagebus.connect(msgBusConnectCallback); else console.log("Connected"); }); } 

callback函数被调用,但我无法弄清楚如何得到对象的引用来再次调用连接。 我也试图使callback一个对象的原型function,仍然没有参考。 我不能在全局范围内创build一个variables来维护“this”,因为这个类的用户可能会创build这个类的多个实例。 我对JavaScript相当陌生,所以我不知道我是否错过了一些东西,或者如果我需要采取不同的方法。 我将不胜感激任何帮助和/或方向。

 this.messagebus.connect.apply(this, [msgBusConnectCallback]); 

我终于想出了答案,正确的语法是this.messagebus.connect(msgBusConnectCallback.bind(this));