0

我一直在调试我在 socket.io 上遇到的一些问题,并偶然发现了这个问题(lib/transport.js第 345 行):

  var current = this.manager.transports[this.id];

然而

typeof this.manager.transports = [Function]

声明如下(lib/manager.js第 928 行):

Manager.prototype.transports = function (data) {
    //some stuff, returns an array
}

有人可以解释这里发生了什么吗?是否缺少一些括号transports()[this.id]

谢谢!

更新 这是函数的代码

Manager.prototype.transports = function (data) {
  var transp = this.get('transports')
   , ret = [];

   for (var i = 0, l = transp.length; i < l; i++) {
     var transport = transp[i];

     if (transport) {
       if (!transport.checkClient || transport.checkClient(data)) {
         ret.push(transport);
       }
     }
   }

 return ret;
};
4

1 回答 1

0

javascript 函数基本上是 javascript 对象,所以当这一行:

this.manager.transports[this.id]

执行它的基本意思是获取transports具有密钥的函数/对象中的属性this.id

您可以通过执行以下操作在控制台中对此进行测试:

function myFunction() {
   alert("inside function");
}
myFunction[3] = "Hi";
console.log( typeof(myFunction) );
console.log( myFunction[3] );
myFunction();
于 2013-07-25T18:13:59.053 回答