我有这样的事情:
var functions = ['function1','function2','function3'];
我如何运行某项功能?
function[0];
理想情况下,我想使用某种计数来单独调用函数。我能够获得正确的输出但它实际上并没有执行该功能。
谢谢!
答案 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
使用括号表示法获取函数名称并通过()
调用它。
这个答案假定你在全球范围内拥有那些具有这些名称的功能。
答案 2 :(得分:0)
您还需要考虑调用范围,这就是您应该使用call
或apply
的原因,具体取决于您是将参数作为单独的对象还是数组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');