我有一个命名空间对象,在这个对象上我定义了一些函数,其中一个函数用于创建一个与远程服务器的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
等,为了简洁起见,我没有在这里展示。
你可以使用指针到这样的函数。
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 "这个词。