如何在 Javascript 中为回调提供执行函数对象实例

How to provide executing function object instance to a callback in Javascript

本文关键字:执行 函数 对象 实例 回调 Javascript      更新时间:2023-09-26

我有一个命名空间对象,我已经在上面定义了一些函数。其中一个函数用于创建到远程服务器的 websocket 会话。

ns.Session = function(url, config, callback){
   var ws = new WebSocket(url);
   ws.onmessage = function (e){
       if(login(e.data)){
           // This is the point at which I need to pass back the session object to callback
           callback(session):
       }
   }
   ....
}

在 Javascript 中,据我所知,如果有人使用 ns.Session(....) 调用此函数,那么this对象将是 ns。那么,我如何获取要发送到回调的"会话"实例
据我所知,arguments.callee已被弃用。

这样做的全部原因是,在服务器确认登录之前,会话不被视为"可用",因此我不想在实际连接和登录之前过早返回函数对象。因此使用回调。如果有更好的方法来实现这一目标,我也对此持开放态度。

Session 还有一堆其他的内部函数,如 addHandlersendData 等,为了简洁起见,我没有在这里展示。

您可以使用指针来执行如下函数:

ns.Session = function session(...) {
    // 'session' here points to your function, so you do
    callback(session); // like you wrote
    callback(ns.Session); // same effect if you don't change ns and ns.Session pointers
}

另外,我不明白为什么在这种情况下使用"实例"一词,因为函数只有一个实例。如果你用"new"关键字调用它,函数从函数创建新对象,现在你可以使用"实例"这个词。