0

我有一个命名空间对象,在该对象上定义了一些函数。其中一个函数用于创建到远程服务器的 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 还有很多其他的内部函数,比如addHandler,sendData等等,为了简洁起见,我没有在这里展示。

4

1 回答 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”这个词。

于 2013-01-23T21:50:08.603 回答