Javascript-如何保存对“的引用”;这";用于使用原型模式在命名函数回调中进行访问

Javascript-如何保存对“的引用”;这";用于使用原型模式在命名函数回调中进行访问,javascript,node.js,Javascript,Node.js,我在获取使用实现的javascript对象的引用时遇到问题 回调中的原型模式。回调来自第三方组件 我在我的对象中使用。第三方对象连接到消息总线 下面的伪代码显示了我是如何开始的(真正的代码正在运行) 但是我想让它在回调报告时自动重试连接 一个错误。如果if(err)阻止了它,我就不能再放一行了 说“this.messagebus.connection”,因为我必须添加另一个匿名 方法进行连接回调,它将继续进行。所以,我想 将回调逻辑拆分为如下命名函数 var mb = require('MsgB

我在获取使用实现的javascript对象的引用时遇到问题 回调中的原型模式。回调来自第三方组件 我在我的对象中使用。第三方对象连接到消息总线

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

但是我想让它在回调报告时自动重试连接 一个错误。如果if(err)阻止了它,我就不能再放一行了 说“this.messagebus.connection”,因为我必须添加另一个匿名 方法进行连接回调,它将继续进行。所以,我想 将回调逻辑拆分为如下命名函数

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");
  });
}
回调函数被调用,但我不知道如何获取引用 重新连接到要调用的对象。我也试着让回调成为一个 对象的原型函数,仍然没有参考。我无法创建变量 在全局范围内维护“this”,因为此类的用户可能 创建该类的多个实例。我对JavaScript相当陌生,所以我不知道 知道我是否遗漏了什么,或者我是否需要采取不同的方法
总共我将非常感谢任何帮助和/或指导。

我终于找到了答案,正确的语法是
this.messagebus.connect.apply(this, [msgBusConnectCallback]);

this.messagebus.connect(msgBusConnectCallback.bind(this))

你搞错了。它是
msgBusConnectCallback.apply(this)
slebetman的解决方案有效-在回调中,它现在指向我的对象。但是,回调的err参数总是未定义的,即使它不应该被定义。有什么想法吗?@Pathfinder
msgBusConnectCallback.apply(此[err])
添加[err]会导致javascript引用错误:err未定义(在对象“构造函数”中)@Pathfinder
var self=this;this.messagebus.connect(函数(err){msgBusConnectCallback.apply(self,[err])})
this.messagebus.connect.apply(this, [msgBusConnectCallback]);