在javascript中调用动态函数

时间:2010-05-21 10:32:09

标签: javascript

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

function id1_add()
{
  return 1;
}

function id2_add()
{
  return 2;
}

我也有这个功能:

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

  s1+'_add()'; //???
}

是否可以在例如:

中调用id1_add()
 s1+'_add()'; 

所以方法调用取决于前一个字符串?

2 个答案:

答案 0 :(得分:3)

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

window[s1 + "_add"]();

请注意,这不适用于嵌套函数。这也依赖于映射到window的全局对象,这是所有可编写脚本的浏览器中的情况。

答案 1 :(得分:-1)

除了Tim的方法,您还可以eval(s1+'_add()');

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

请参阅When is JavaScript's eval() not evil?

更好的选择是拥有一个函数,根据你想要的方式传递一个不同的参数。