我一直在调试我在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;
};发布于 2013-07-25 18:13:59
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();https://stackoverflow.com/questions/17865630
复制相似问题