Javascript 使用字符串调用不带eval()的函数

Javascript 使用字符串调用不带eval()的函数,javascript,Javascript,我想将一个字符串传递给一个函数,然后该函数将使用该字符串作为回调。 e、 g 但是,我在防止使用eval()的环境中使用它。。。我怎样才能在没有eval的情况下重写它 我试过: var self = this; return function(){ self[callback]() }; 但是它不调用函数(并且我没有得到任何错误) 更新:我忘了我还需要处理参数: e、 g 使用窗口对象。 将您的eval()调用替换为: window[callback](); 您可以使用构造函数 var f

我想将一个字符串传递给一个函数,然后该函数将使用该字符串作为回调。 e、 g

但是,我在防止使用
eval()
的环境中使用它。。。我怎样才能在没有eval的情况下重写它

我试过:

var self = this; 
return function(){ self[callback]() };
但是它不调用函数(并且我没有得到任何错误)

更新:我忘了我还需要处理参数:

e、 g


使用
窗口
对象。 将您的
eval()
调用替换为:

window[callback]();
您可以使用构造函数

var func = new Function("console.log('i am a new function')");
func();

需要更多的上下文。您试图调用的函数位于何处,data.func包含哪些内容?@epascarello:如果不是,则,
eval(callback+“()”也不行。谢谢,如果我有params呢?请参阅我的最新问题。因为这似乎不起作用:
window[callback](params)窗口[回调].apply(窗口,参数);给出错误
uncaughttypeerror:当我尝试这样做时,无法读取未定义的属性“apply”
,事实上
window[callback]()也不起作用。。。但是
eval(callback+“()”)
可以……那么,你也可以使用
eval()
它。op声明他不能使用
eval()
我想说的是,你的答案基本上与使用
eval
是一样的。好吧,也许op的环境允许使用函数构造函数,但不允许使用
eval()
。如何使回调函数成为函数名?
window[callback]();
var func = new Function("console.log('i am a new function')");
func();