我想编写这样的函数:
function doGoodJob(someId, callBackfunction){
// some stuff with someId
// todo: RUN callBackFunction here
}
他们说,就代码注入(inject)而言,eval是“危险的”。
因此,编写一个接受回调函数并安全运行的JavaScript函数的最佳实践是什么?
最佳答案
您的回调是字符串还是实际函数?
如果它是一个功能。
function doGoodJob(someId,callbackFunction)
{
callbackFunction();
}
doGoodJob(1,function(){alert('callback');});
如果它是字符串,则可以使用Function构造函数。
function doGoodJob(someId,callbackFunction)
{
var func = new Function(callbackFunction)
func();
}
doGoodJob(1,"alert('test');");
或两者都测试。
function doGoodJob(someId,callbackFunction)
{
var func = (typeof callbackFunction == 'function') ?
callbackFunction : new Function(callbackFunction);
func();
}
doGoodJob(1,function(){alert('callback');});
doGoodJob(1,"alert('test');");