我想知道是否有方法使用變量名而不是函數。 即,如何在JavaScript中使用變量而不是函數名稱
function dialog(a,b) {
a(b);
}
示例:如果用戶通過'alert'
到a
和內容發送到b
。 然後它應該提醒b
。
如果a
是'confirm'
,那麼它應該確認b
。
我可以使用開關櫃或其他,但我想知道上述是可能的。
我想知道是否有方法使用變量名而不是函數。 即,如何在JavaScript中使用變量而不是函數名稱
function dialog(a,b) {
a(b);
}
示例:如果用戶通過'alert'
到a
和內容發送到b
。 然後它應該提醒b
。
如果a
是'confirm'
,那麼它應該確認b
。
我可以使用開關櫃或其他,但我想知道上述是可能的。
使用.call()
function callme(a,b){
return a.call(null, b);
};
var func = function(c) {
return c;
};
alert(callme(func, "test"));
傳遞給callme
任何功能將執行那裏。第一個參數是上下文,所以如果需要,您可以通過this
。否則通過null
。
在你的情況下,可以通過alert/confirm。如果你不需要返回一些東西,只需在最後做一個空的返回。
請勿使用eval
,因爲對所有事物都很好。
我認爲你正在尋找eval()
method,但如果你不小心,它可能導致insecurities。
您可能只是用戶提供它們本身的功能,如果在你的榜樣,他們在原函數傳遞爲a
,但我假設你希望他們通過這名字是得到一個函數的字符串用過的。
function(a, b) {
eval(a + '(' + b + ')');
}
哦,哦。我誤解了你的問題。 Mods:請忽略國旗。 – bwDraco
你是否在傳遞字符串「alert」,「confirm」或函數'alert'和'confirm'?後者工作正常 - 即「對話框(警報,'hello world')'警報和'確認'也適用。我絕對不會使用'eval'解決方案。 – caasjj
另一個選項是'dialog('alert','Hello World')''和window [a](b);'。 – Xufox