函数数组-执行单个函数

Array of functions - execute single function

本文关键字:函数 单个 执行 数组      更新时间:2023-09-26

我有这样的东西:

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

如何运行某个函数?

function[0];

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

谢谢!

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

和call like

array_of_functions[count](parameters);

例子
array_of_functions[0]();

array_of_functions[0]('string');

JSFIDDLE演示: http://jsfiddle.net/mzxCk/

像这样:

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

使用括号表示法获得函数名并按()调用。

这个答案假设在全局作用域中有这些函数的名字。

小提琴

你还需要考虑调用作用域,这就是为什么你应该使用callapply,这取决于你是作为单独的对象传递你的参数还是一个数组,参见这里的描述。

如果您的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');