我有一个包含一堆函数名的数组。我没有将函数存储在对象中。
for (i = 0; i < view_functions.length; i++) {
view_functions[i]();
}
这不起作用,有什么想法吗?
感谢。
答案 0 :(得分:0)
您发布的代码有效,因此定义函数的代码可能并不恰当。这是一个完全有效的例子。
function yep() {
alert('Yep');
}
function again() {
alert('Again');
}
var view_functions = [
yep,
again
];
for (var i = 0; i < view_functions.length; i++) {
view_functions[i]();
}
&#13;
如果您想在代码中获得一些设计帮助,可以介绍一个工厂。这具有使未知函数名明确的附加好处。
function yep() {
alert('Yep');
}
function again() {
alert('Again');
}
function functionFactory(name) {
switch (name) {
case 'yep':
return yep;
case 'again':
return again;
default:
throw `${name} not a known function in functionFactory`;
}
}
var view_functions = [
'yep',
'again'
];
for (var i = 0; i < view_functions.length; i++) {
var func = functionFactory(view_functions[i]);
func();
}
&#13;
如果你只有字符串名称,我建议你不要使用字符串名称......但是你可以使用eval
...
function yep() {
alert('Yep');
}
function again() {
alert('Again');
}
var view_functions = [
'yep',
'again'
];
for (var i = 0; i < view_functions.length; i++) {
var n = view_functions[i] + '()';
eval(n);
}
&#13;
但为什么不将实际的功能存储在数组中呢......