从传递给函数的string中调用一个javascript函数

我在这里看到了类似性质的多个问题,但是没有人会为我具体的东西(即时使用node.js)工作。 所以例如在这里拿这个代码。

function command_call(message, socket) { if (message.length > 1){ var func = message[0]; var string = message.slice(1); var string = string.join(' ')} else{ var func = message[0]; var string = '';}; if(func[0] == '$') { (eval(func.slice(1)))(string, socket);}; }; function say(string, socket){ socket.write(string)}; 

如果传递给command_call的消息是“$ say hi”,那么函数会被调用并返回“hi”。 这工作得很好,但是,如果被放到eval的函数不存在,它崩溃。 例如,如果传递给command_call的消息是“$ example blah”,它将尝试评估“example”。 基本上我需要它来检查function是否存在之前它的function。 是的,我想要使用eval,除非有更好的方法来做节点。 再次,这是在node.js

您应该创build一个函数的对象并使用索引器表示法:

 var methods = { $say: function() { ... } }; if (!methods.hasOwnProperty(func)) // uh oh else methods[func]();