我有一个包含一堆函数名称的数组。我没有将函数存储在一个对象中。使用字符串名称从数组中运行函数
for (i = 0; i < view_functions.length; i++) {
view_functions[i]();
}
这不行,有什么想法?
谢谢。
我有一个包含一堆函数名称的数组。我没有将函数存储在一个对象中。使用字符串名称从数组中运行函数
for (i = 0; i < view_functions.length; i++) {
view_functions[i]();
}
这不行,有什么想法?
谢谢。
您发布的代码有效,因此定义函数的代码可能不太正确。这是一个完全可行的例子。
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]();
}
如果你想获得一点的设计有助于在你的代码,你可以介绍一家工厂。这有明确的未知函数名称的附加好处。
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();
}
如果你只有串名字,我建议不使用字符串名称...但你可以去充满邪恶和使用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);
}
但是,为什么不把实际功能存储在数组中。
你可以自己存储函数吗? –
https://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string – Peter
如果数组存储名称字符串,则不能称之为那些。请发布完整的代码,显示“view_functions”是什么以及函数在哪里定义。 – Bergi