如何在JavaScript中使用变量而不是函数名

时间:2015-10-01 01:16:28

标签: javascript function

我想知道是否有一种方法可以使用变量名而不是函数。 也就是说,

function dialog(a,b) {
    a(b);
}

示例:如果用户将'alert'传递给a,将内容传递给b。 然后它应该警告b

如果a'confirm',则应确认b

我可以使用switch case或者if else,但我想知道上面的内容是可能的。

2 个答案:

答案 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,因为对所有事物的热爱。