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

问题描述 投票:0回答:1

我有一个命名空间对象,在这个对象上我定义了一些函数,其中一个函数用于创建一个与远程服务器的websocket会话。其中一个函数用于创建与远程服务器的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。那么,我如何获得 实例 的 "session "发送至回调。arguments.callee 据我所知,已经废弃了。

我这样做的全部原因是,在服务器确认登录之前,会话不被认为是 "可用的",所以我不想在实际连接和登录之前过早地返回函数对象。因此使用了回调。如果有更好的方法来实现,我也愿意接受。

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

javascript websocket callback dom-events
1个回答
5
投票

你可以使用指针到这样的函数。

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'关键字调用它,函数就会从函数中创建新的对象,现在你可以使用 "instance "这个词。

© www.soinside.com 2019 - 2024. All rights reserved.