迭代器引用错误的字符串

时间:2016-11-14 03:26:15

标签: javascript node.js socket.io

我正在尝试将字符串映射到Node.js中的函数。

function foo(data) {
    //foo body
}

function bar(data) {
    //bar body
}

var FUNCTION_MAP = {
    "foo": foo,
    "bar": bar
}


for (var event in FUNCTION_MAP) {
    socket.on(event, function(data) {
        FUNCTION_MAP[event](data);
    });
}

某些手动测试显示event始终为"bar",因此无论调用什么事件,即始终调用socket.emit("foo", {})或{{ 1}},始终在服务器端调用socket.emit("bar", {})函数。即使创建新的字符串对象也不起作用。

bar

为什么for (var event in FUNCTION_MAP) { socket.on(event, function(data) { FUNCTION_MAP[new String(event)](data); }); } 在循环终止后保留值event?如何创建具有自己值且不引用"bar"变量的字符串对象?

0 个答案:

没有答案