我想傳遞一個字符串到一個函數,然後將這個字符串作爲回調。 例如使用字符串調用沒有eval()函數()
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]() };
但它不會調用該函數(和我沒有得到任何錯誤)
更新:我忘了我還需要處理參數:
eg
var params = ['param1', 'param2'];
eval(callback + "("+ params +")");
需要更多的上下文。你試圖調用的函數在哪裏,data.func能保存什麼? – epascarello 2014-10-17 11:59:34