执行名称在数组中的函数
Execute functions whose names are in an array
我看过 How to execute a JavaScript function when I have its name as a string, Calling a JavaScript function named in a variable, Can I use the value of a variable to initiate a function?,但我不知道如何使用数组和 for 循环来实现它。
我尝试过的:
我有几个函数,比方说:
function one() {
alert('one');
}
function two() {
alert('two');
}
function three() {
alert('three');
}
和一个数组:
callThese = ['one', 'two']
我想打电话给 one
和 two
。
这行不通:
for (i = 0; i < callThese.length; ++i) {
//console.log(callThese[i]); <--- (outputs one and two)
window[callThese[i]]();
}
我得到的错误是 TypeError: object is not a function
。这些功能肯定在那里,它们通过手动调用它们来工作(即 one()
、two()
、等等...)。
抱歉,如果这是一个基本错误,但我该如何让它工作?如果有 jQuery 解决方案,我不介意。
您需要为您的对象分配功能。不建议创建全局函数(其他scripts/frameworks可以覆盖)。
var obj = {
one: function () {
alert('one');
},
two: function () {
alert('two');
},
three: function () {
alert('three');
}
},
callThese = ['one', 'two'];
for (var i = 0; i < callThese.length; ++i) {
obj[callThese[i]]();
}
您可以创建一个包含函数的对象
var myFuncs = {
one: function () {
alert('one');
},
two: function () {
alert('two');
}
}
for (i = 0; i < callThese.length; ++i) {
myFuncs[callThese[i]]();
}
我看过 How to execute a JavaScript function when I have its name as a string, Calling a JavaScript function named in a variable, Can I use the value of a variable to initiate a function?,但我不知道如何使用数组和 for 循环来实现它。
我尝试过的:
我有几个函数,比方说:
function one() {
alert('one');
}
function two() {
alert('two');
}
function three() {
alert('three');
}
和一个数组:
callThese = ['one', 'two']
我想打电话给 one
和 two
。
这行不通:
for (i = 0; i < callThese.length; ++i) {
//console.log(callThese[i]); <--- (outputs one and two)
window[callThese[i]]();
}
我得到的错误是 TypeError: object is not a function
。这些功能肯定在那里,它们通过手动调用它们来工作(即 one()
、two()
、等等...)。
抱歉,如果这是一个基本错误,但我该如何让它工作?如果有 jQuery 解决方案,我不介意。
您需要为您的对象分配功能。不建议创建全局函数(其他scripts/frameworks可以覆盖)。
var obj = {
one: function () {
alert('one');
},
two: function () {
alert('two');
},
three: function () {
alert('three');
}
},
callThese = ['one', 'two'];
for (var i = 0; i < callThese.length; ++i) {
obj[callThese[i]]();
}
您可以创建一个包含函数的对象
var myFuncs = {
one: function () {
alert('one');
},
two: function () {
alert('two');
}
}
for (i = 0; i < callThese.length; ++i) {
myFuncs[callThese[i]]();
}