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