Javascript:作为哈希值

时间:2015-08-08 21:24:10

标签: javascript

我想根据我找到的输入调用不同的函数。如果输入与其中一个键匹配,我想调用相应的函数 - 使用一些参数:

var commands = {
  'key1': someFunction,
  'key2': otherFunction
};

键是字符串,为了更容易,我创建了command_keys变量:

var command_keys = Object.keys(commands);

我进一步定义了两个函数:

function someFunction(param) {
 // do sth.
};

function otherFunction(param) {
 // do sth. else
};

然后我有条件检查密钥并根据我找到的密钥调用其中一个函数:

if (command_keys.indexOf(some_string) > -1) {
  index = command_keys.indexOf(some_string);
  commands[index](some_param);
}

然而,我收到错误:

Uncaught TypeError: commands[index] is not a function(anonymous function)

感谢您的想法。

1 个答案:

答案 0 :(得分:3)

我认为你根本不需要command_keys。仅commands就足以满足您在此描述的内容。

var commands = {
    'key1': someFunction,
    'key2': otherFunction
};

var command = commands[some_string];
if (typeof command === 'function') {
    command(some_param);
}