我将此函数调用作为字符串传递:

var dcall = "tumbsNav(1)";


是否可以像exec在SQL中一样动态地执行此操作?

exec(dcall)

最佳答案

无论您存储在哪里

var dcall = "tumbsNav(1)";


您可以改为存储

var dcall = function() {
   return tumbsNav(1);
};


无论您在哪里打电话,都不必打电话

eval(dcall);


您可以改为致电

dcall();


唯一不起作用的情况是,在调用tumbsNav时未定义var func = ...的情况。然后,您将必须存储字符串。如果字符串完全在您的控制之下,那么就没有安全漏洞,但是请注意@Porco提到的所有问题

正如Kolink所提到的,如果为tumbsNav分配包装了调用tumbs的匿名函数时未定义,则我的示例不会引起问题。仅当示例如下时,以上注释才有意义:

var dcall = tumbsNav, darg = 1;
// later in the code, you can call
dcall(darg) ;

关于javascript - 使用jQuery执行动态传递的函数调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10729667/

10-12 15:47