从传递给函数的字符串调用javascript函数

时间:2013-09-08 20:59:26

标签: javascript string node.js function eval

我在这里已经看到了类似性质的多个问题,但没有一个可以用于我拥有的特定事物(我使用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

1 个答案:

答案 0 :(得分:3)

你应该创建一个函数对象并使用索引符号:

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

if (!methods.hasOwnProperty(func))
    // uh oh
else
    methods[func]();