动态调用函数 jQuery

dynamic call to a function jQuery

我正在尝试构建一个库,我需要根据参数中的变量动态调用函数,如下所示

strategies = min
function dispatchRuleToStrategy(strategies)
{
    $.each(strategies, function(index, value) {
        strategy = "strategy_" + value;
    });
}

function strategy_min()
{
    // do something
}

如何从 dispatchRuleToStrategy() 调用函数 strategy_min()

我一直在尝试一些东西 none,其中一些是有效的。

感谢您的帮助

使用 Object 创建函数字典,例如lib

var lib = {
    'strategy_min': strategy_min
};

然后你可以通过这个字典中的键调用Object

lib['strategy_min']();

如果您已经为所有函数命名并且不想一遍又一遍地重新输入名称,您可以

var lib = {};
function addToLib(fn) {
    lib[fn.name] = fn;
}
// then
addToLib(strategy_min);
// or
[strategy_min].forEach(addToLib);

将它们放在一个对象中并使用 属性 名称:

var strategy_table = {
    min: function() {
        // do something
    },
    max: function() {
        // do something else
    },
    ...
};

然后您可以访问它们 strategy_table[value]:

$.each(strategies, function(index, value) {
    strategy_table[value]();
});

您可以通过以下方式使用 eval() 函数

 $.each(strategies, function(index, value) {
    strategy = "strategy_" + value;
    eval(strategy+"()");
});

其他人已经建议为函数创建一个包装器对象,但是,如果您的 strategy_min() 函数在全局范围内,您可以直接访问它:

window['strategy_' + value]();

window 在浏览器中指的是全局对象。括号表示法用于访问其键是动态生成的属性。这样你就可以访问函数,它是全局对象的 属性,即 window,并使用括号调用它。

终于找到问题所在了。我在一个 jquery 文档中准备好了,这是一个闭包。今天之前我都不知道什么叫停业。

感谢大家的帮助