我想知道是否有一种方法可以使用变量名而不是函数。 也就是说,
function dialog(a,b) {
a(b);
}
示例:如果用户将'alert'
传递给a
,将内容传递给b
。
然后它应该警告b
。
如果a
为'confirm'
,则应确认b
。
我可以使用switch case或者if else,但我想知道上面的内容是可能的。
答案 0 :(得分:1)
我认为您正在寻找eval()
method,但如果您不小心,可能会导致insecurities。
你可以让用户为他们提供函数本身,如果在你的例子中,他们传递了原始函数a
,但我假设你希望他们通过一个字符串,它命名一个被使用的函数。
function(a, b) {
eval(a + '(' + b + ')');
}
答案 1 :(得分:1)
使用.call()
function callme(a,b){
return a.call(null, b);
};
var func = function(c) {
return c;
};
alert(callme(func, "test"));
您传递给callme
的任何功能都将在那里执行。第一个参数是上下文,因此如果需要,您可以传递this
。否则通过null
。
在您的情况下,可以传递警报/确认。如果您不需要返回某些内容,请在结尾处进行空白返回。
不要使用eval
,因为对所有事物的热爱。