我正在编写一个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;
}
}
有没有更有效/更好的方法呢?
答案 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>