我想将一个字符串传递给一个函数,然后该函数将该字符串用作回调函数。 e.g。
app.on('notice', function(data) {
var callback = data.func; // this is a string
eval(callback + "()"); // trun string into an executable function
});
但是我在一个阻止使用eval()
的环境中使用它...如何在没有eval的情况下重写它?
我试过了:
var self = this;
return function(){ self[callback]() };
但它没有调用该函数(我没有收到任何错误)
更新:我忘记了我还需要处理参数:
e.g。
var params = ['param1', 'param2'];
eval(callback + "("+ params +")");
答案 0 :(得分:7)
使用window
对象。
将您的eval()
来电替换为:
window[callback]();
答案 1 :(得分:2)
您可以使用Function构造函数。
var func = new Function("console.log('i am a new function')");
func();