我正在尝试将字符串映射到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"
变量的字符串对象?