Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中调用动态函数_Javascript - Fatal编程技术网

在javascript中调用动态函数

在javascript中调用动态函数,javascript,Javascript,可以在javascript中调用动态方法吗。ie假设我在第2页中有这样的方法: function id1_add() { return 1; } function id2_add() { return 2; } 我还有这个功能: function add() { var s1='id1'; s1+'_add()'; //??? } 是否可以在以下情况下调用示例id1_add(): 因此,方法调用取决于前面的字符串?在全局范围中声明的函数的特定情况下,您可以执行以下操作 w

可以在javascript中调用动态方法吗。ie假设我在第2页中有这样的方法:

function id1_add()
{
  return 1;
}

function id2_add()
{
  return 2;
}
我还有这个功能:

function add()
{
  var s1='id1';

  s1+'_add()'; //???
}
是否可以在以下情况下调用示例id1_add():


因此,方法调用取决于前面的字符串?

在全局范围中声明的函数的特定情况下,您可以执行以下操作

window[s1 + "_add"]();

注意:这不适用于嵌套函数。这还依赖于映射到
窗口的全局对象,这在所有可编写脚本的浏览器中都是如此。

除了Tim的方法之外,您还可以
求值(s1+“_add()”)

但是,如果使用不当,此方法可能不安全


更好的选择是使用一个函数,您可以根据需要向该函数传递不同的参数。

+1比
eval
更糟糕。但无论如何,这是一种代码气味。最好是显式查找函数名。是的。我懒散地省略了“你确定你应该这样做吗?”这一点。@bobince:
eval
不一定很糟糕。这实际上取决于你如何使用它(见我答案中的讨论)。
window[s1 + "_add"]();