动态调用函数 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 文档中准备好了,这是一个闭包。今天之前我都不知道什么叫停业。
感谢大家的帮助
我正在尝试构建一个库,我需要根据参数中的变量动态调用函数,如下所示
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 文档中准备好了,这是一个闭包。今天之前我都不知道什么叫停业。
感谢大家的帮助