函数数组 - 执行单个函数

时间:2014-05-27 08:02:04

标签: javascript arrays

我有这样的事情:

var functions = ['function1','function2','function3'];

我如何运行某项功能?

function[0];

理想情况下,我想使用某种计数来单独调用函数。我能够获得正确的输出但它实际上并没有执行该功能。

谢谢!

3 个答案:

答案 0 :(得分:2)

var array_of_functions = [
    first,
    second,
    third,
    forth
]

并调用

array_of_functions[count](parameters);

例如

array_of_functions[0]();

array_of_functions[0]('string');

JSFIDDLE DEMO: http://jsfiddle.net/mzxCk/

答案 1 :(得分:1)

像这样:

window[functions[0]]();
               //^---------- use index here

使用括号表示法获取函数名称并通过()调用它。

这个答案假定你在全球范围内拥有那些具有这些名称的功能。

Fiddle

答案 2 :(得分:0)

您还需要考虑调用范围,这就是您应该使用callapply的原因,具体取决于您是将参数作为单独的对象还是数组see here for a description of both传递。

如果你的functions包含一个字符串集合,你需要像这样调用它们(带args)(注意this作为第一个调用参数,这是函数的作用域将运行,因此在这种情况下window):

var func1 = function (msg) {
  document.write("func1 called with message - " + msg + ".");
};
var functions = ['func1', 'func2'];
window[functions[0]].call(this, 'here is a message');

如果functions包含Function的集合,那么您需要像这样调用它们:

var functions = [
  function (msg) {
    document.write("func1 called with message - " + msg + ".");
  },
  function (msg) {
    document.write("func2 called with message - " + msg + ".");
  }];
functions[0].call(this, 'here is a message');