在javascript中调用动态函数
可以在javascript中调用动态方法吗。ie假设我在第2页中有这样的方法:在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
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"]();