我想寫這樣一個功能:如何編寫接受callBack函數的函數並以「安全」方式運行?
function doGoodJob(someId, callBackfunction){
// some stuff with someId
// todo: RUN callBackFunction here
}
他們說EVAL是代碼注入的術語「危險」。
那麼,編寫一個接受回調函數並安全運行的JavaScript函數的最佳做法是什麼?
我想寫這樣一個功能:如何編寫接受callBack函數的函數並以「安全」方式運行?
function doGoodJob(someId, callBackfunction){
// some stuff with someId
// todo: RUN callBackFunction here
}
他們說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');");
這應該工作:
function doGoodJob(simeOd, callBackFunction){
/** Do stuff **/
callBackFunction();
}
雖然晚於這個話題,只是想阿迪一些事情。 以上解決方案適用於警報或傳遞函數作爲參數,但不適用於以下情況。
doGoodJob(1, "someCallbackFunction");
function someCallBackFunction() {
alert("im called");
}
代替如果使用的eval(callbackFunction參數)如下面
function doGoodJob(someId,callbackFunction) {
var func = (typeof callbackFunction == 'function') ?
callbackFunction : eval(callbackFunction);
func();
}
doGoodJob(1,someCallBackFunction);
doGoodJob(1,"someCallBackFunction");