如何使用存储在变量中的值来调用函数?

Vai*_*ain 6 javascript jquery function

我有一个变量

var functionName="giveVote";
Run Code Online (Sandbox Code Playgroud)

我需要做的是,我想调用存储在var functionName中的函数.我尝试使用functionName(); .但它不起作用.请帮忙.

编辑基于同样的问题,我有

$(this).rules("add", {txtInf: "^[a-zA-Z'.\s]{1,40}$" }); 
Run Code Online (Sandbox Code Playgroud)

rules是一个预先定义的函数,它接受methodName:,这里我有硬编码的txtInf.但我想在这里提供一个javascript变量,以使我的代码通用. var methodName ="txtInf";

在这里,我想先在methodName函数中使用之前评估methodName.

$(this).rules("add", {mehtodName: "^[a-zA-Z'.\s]{1,40}$" }); 
Run Code Online (Sandbox Code Playgroud)

mwa*_*way 10

你有一些选择 - 两个基本选项包括window[functionName]()setTimeout(functionName, 0).给那些人一个机会.

编辑:如果您的变量只是函数的字符串名称,请使用这些; 否则,如果您能够实际为变量分配函数引用(例如,var foo = function() {};),则可以使用foo()符号,或foo.apply(this, [])等.

编辑2:要methodName$(this).rules()触发之前就地进行评估,您只需应用上面的第一个语法(使用window对象),如下所示:

$(this).rules("add", {window[methodName](): ...});
Run Code Online (Sandbox Code Playgroud)

我认为这就是你所要求的 - 如果没有,请澄清一点,我会很乐意重写一个解决方案.


Niv*_*vas 7

   var functionName="giveVote"; 
Run Code Online (Sandbox Code Playgroud)

将字符串"giveVote"分配给变量functionName.如果giveVote是函数的名称,则必须使用以下方法之一进行分配:

如果您在编译时知道函数名称,那么就可以

var functionName="giveVote"; 
Run Code Online (Sandbox Code Playgroud)

但我认为你想动态分配函数然后调用它.然后你必须说

   var functionName=window["giveVote"]; 
Run Code Online (Sandbox Code Playgroud)

然后通过它来调用它

functionName();
Run Code Online (Sandbox Code Playgroud)

或直接

window["giveVote"]();
Run Code Online (Sandbox Code Playgroud)

这是可能的,因为您在JavaScript中声明的任何全局函数(全局函数,而不是任何其他对象的一部分),然后它成为window对象的一部分.