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

Abe*_*Abe 0 javascript callback javascript-events 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):
       }
   }
   ....
}
Run Code Online (Sandbox Code Playgroud)

在JavaScript中,据我知道,如果有人调用使用此功能ns.Session(....),则this对象将是纳秒.那么,我如何获得要发送给回调的"会话" 实例.
arguments.callee据我所知,已被弃用.

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

会议有一堆的其他内部功能,如addHandler,sendData我还没有在这里显示为简洁起见,等等.

mon*_*shq 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
}
Run Code Online (Sandbox Code Playgroud)

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