javascript/jQuery-从函数数组中匹配函数

javascript/jQuery-从函数数组中匹配函数,javascript,jquery,function,Javascript,Jquery,Function,我有一系列函数,比如: var functions = [ func1 = function(){ ... }, func2 = function(){ ... }, func3 = function(){ ... } ] ; 如果我调用一个像functions[func1]()这样的函数,它会工作,但是如果我像functions['func1']()那样调用它,它不会工作 有什么区别 如何使用第二种方法调用函数(将函数名与字符串匹配)?它需要是一个包含键的对象: var f

我有一系列函数,比如:

var functions = [
   func1 = function(){ ... },
   func2 = function(){ ... },
   func3 = function(){ ... }
] ;
如果我调用一个像
functions[func1]()
这样的函数,它会工作,但是如果我像
functions['func1']()
那样调用它,它不会工作

有什么区别


如何使用第二种方法调用函数(将函数名与字符串匹配)?

它需要是一个包含键的对象:

var functions = {
   func1: function(){ ... },
   func2: function(){ ... },
   func3: function(){ ... }
};
这将允许
函数['func1']()
工作

不过,我不知道你的
函数[func1]()
是如何工作的


原始代码可能(无意中)创建了全局变量(
func1
,等等),但这些变量不是
函数
数组中的有效索引。

如果要调用随机函数,请尝试以下方法():

var functions = {   
                func1: function(){ ... },   
                func2: function(){ ... },   
                func3: function(){ ... }
};

我还可以在上面使用类似数组的索引吗?如
functions[5]
functions[functions.length]
等?仅当您还对每个元素执行类似于:
functions[0]=functions.func1
的操作时。注意:数组偏移量从零开始。但是太多了,我不想让代码太大:(有没有办法从该对象中随机选取一个函数?(这就是我询问索引的原因)当然,在
object.getOwnPropertyNames(函数)返回的数组中选取一个随机数作为偏移量)
为什么要将所有函数嵌套在数组中?@js1568:因为在后续评论中,Alex询问是否可以使用随机索引选择函数。
var functions = [
   [ function(el){ el.html('function 1'); } ],
   [ function(el){ el.html('function 2'); } ],
   [ function(el){ el.html('function 3'); } ]
],

    random = Math.round(Math.random() * functions.length),
    output = $('#display');

functions[random][0](output);