执行名称在数组中的函数

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']

我想打电话给 onetwo

这行不通:

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]]();
}