我想解雇一个功能.不幸的是我不能直接调用它,因为函数的名称是作为字符串提供的.
例:
function myFunction() {
alert('I am myFunction');
}
function anotherFunction() {
alert('I am anotherFunction');
}
var func_name = 'myFunction';
$obj = jQuery('a');
$obj.each(function(){
$(this).func_name(); // eval didn't help here :(
});
显然这不起作用,因为JS期望func_name是一个有效的函数.有没有办法让myFunction()被触发而不是func_name()?谢谢.
更新:嗯,在测试了一些答案之后,我的问题描述似乎并不完整.:OI更新了代码以包含一个对象,我想要附加/运行该函数.
再次感谢!
这是一个示例函数:
function processFanGrowth() {
console.log('fanGrowth');
}
Run Code Online (Sandbox Code Playgroud)
和一个对象"data",其属性名称为"FanGrowth"
for(var property in data) {
// here i'm trying to generate the function name.
funcName = "process" + property;
funcName();
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:未捕获TypeError:字符串不是函数
我试图使用带有它名称的变量来调用函数.
这是代码:
var selectedFunc = 'func2';
var myModule = {
func1: function() {
//something here
},
func1: function() {
//something here
}
};
myModule.selectedFunc();
Run Code Online (Sandbox Code Playgroud)
我通常会这样做:
myModule.func1();
Run Code Online (Sandbox Code Playgroud)
这将工作,但我正在尝试使用变量来定义它的名称,这是行不通的.
我该如何解决这个问题?
我对一些问题感到震惊。
这是我正在尝试的:
我可以做到这一点:
var case = 'toUpperCase()';
'abcd'.case; //output ===> ABCD
Run Code Online (Sandbox Code Playgroud)
用户将通过案例uppercase或lowercase
function getIndex(obj){
var index = window[String('someGlobalArray')].indexOf(String(obj.name).case);}
var pass = {name:'helper',case:'toUpperCase'};
someGlobalArray = ['HELPER','A','b','C',.......];
getIndex(pass);
Run Code Online (Sandbox Code Playgroud)