是否可以在javascript中调用动态方法。即假设我在我的第2页中有这样的方法:
function id1_add()
{
return 1;
}
function id2_add()
{
return 2;
}
我也有这个功能:
function add()
{
var s1='id1';
s1+'_add()'; //???
}
是否可以在例如:
中调用id1_add() s1+'_add()';
所以方法调用取决于前一个字符串?
答案 0 :(得分:3)
在全局范围仅中声明的函数的特定情况下,您可以执行
window[s1 + "_add"]();
请注意,这不适用于嵌套函数。这也依赖于映射到window
的全局对象,这是所有可编写脚本的浏览器中的情况。
答案 1 :(得分:-1)
除了Tim的方法,您还可以eval(s1+'_add()');
。
但是,如果使用不当,此方法可能不安全。
请参阅When is JavaScript's eval() not evil?
更好的选择是拥有一个函数,根据你想要的方式传递一个不同的参数。