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

标签 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 中有更好的方法来完成它。同样,这是在 node.js 中

最佳答案

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

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

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

关于javascript - 从传递给函数的字符串调用 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18688603/

相关文章:

javascript - Pusher - 存在 channel 中的用户身份验证

node.js - Node js 应用程序在控制台关闭时停止

javascript - 使用 Node 检查器调试 V8

node.js - Youtube PubSubHubBub 集成

javascript - 主体加载注入(inject): how to restore order sequence

javascript - 为什么我不能在 for-of 循​​环中将更新后的值赋给变量 'word' ?

使用多个选项通过匹配字符串来替换字符

java - 删除尾随和前导空格

java - JFileChooser getCurrentDirectory() 到 String

javascript - 如何使用 jQuery 对动态生成的 SELECT 元素中的数据进行排序?