命令就像执行函数一样

时间:2014-05-26 17:49:01

标签: javascript

我正在编写一个JS终端,为了执行命令,我使用以下方法:

function cmd(command){
    var args = command.split(" ");
    var size = args.filter(function(value) { return value !== undefined }).length;
    if (args[0] === "command-name") {
        ...stuff to do
        return;
    }
    if (args[0] === "another command") {
        ...stuff to do
        return;
    }
}

有没有更有效/更好的方法呢?

2 个答案:

答案 0 :(得分:1)

您可以使用对象将命令名存储到函数映射,类似于

var commands = {
    "command-name": function doCommandName (args) {
        alert("My arguments: " + args);
    },
    "another-command": function doAnotherCommand (args) {
    }
};

function cmd(command) {
    var args = command.split(" ");
    var cmd = args[0];
    if (commands.hasOwnProperty(cmd)) {
        commands[cmd](args.slice(1));
    }
    else {
        alert("Unknown command " + cmd);
    }
};

答案 1 :(得分:0)

我相信这很难以更优雅的方式完成。但是,您可以使用一个对象数组,每个对象都有一个字符串name和一些函数execute作为成员,实现将根据args[0]选择数组成员。< / p>