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);