1

我在这里看到了多个类似性质的问题,但没有一个适用于我所拥有的特定事物(我使用的是 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”,那么函数 say 将被调用并返回“hi”。这工作得很好,但是,如果放入 eval 的函数不存在,它就会崩溃。例如,如果传递给 command_call 的消息是“$example blah”,它将尝试评估“example”。基本上我需要它在评估函数之前检查函数是否存在。是的,我想使用 eval,除非在节点中有更好的方法。再一次,这是在 node.js 中

4

1 回答 1

3

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

var methods = { 
    $say: function() { ... }
};

if (!methods.hasOwnProperty(func))
    // uh oh
else
    methods[func]();
于 2013-09-08T21:01:25.347 回答