Javascript - 函数名中的变量,可能吗?

Pet*_*ter 40 javascript

我希望这个问题不是太简单,但我不知道:(

如何使用函数名中的var启动函数?

例如 ...

我的职责

function at_26();
function at_21();
function at_99();
Run Code Online (Sandbox Code Playgroud)

启动功能

var test_id = 21;   
at_'+test_id+'();   // doesn't work
Run Code Online (Sandbox Code Playgroud)

我希望有人可以帮助我.

提前致谢!彼得

Que*_*tin 75

将您的功能存储在对象中,而不是将它们置于顶级.

var at = {
    at_26: function() { },
    at_21: function() { },
    at_99: function() { }
};
Run Code Online (Sandbox Code Playgroud)

然后你可以像任何其他对象一样访问它们:

at['at_' + test_id]();
Run Code Online (Sandbox Code Playgroud)

您也可以直接从window对象访问它们......

window['at_' + test_id]();
Run Code Online (Sandbox Code Playgroud)

...并且避免将它们存储在对象中,但这意味着要在应该避免的全局范围内进行游戏.

  • 我更好奇为什么有人会创建100个仅由索引不同的函数... (6认同)
  • 试验.假设您有一个实用程序库,可以执行类似转换路径的操作.您可能有一系列路径来测试每个方法.这是向库中添加实用程序的简单方法,无需复制代码即可为每个新方法运行测试. (3认同)

小智 19

你很亲密

var test_id = 21
this['at_'+test_id]()
Run Code Online (Sandbox Code Playgroud)

但是,你可能想要的:

at = []
at[21] = function(){ xxx for 21 xxx }
at[test_id]()
Run Code Online (Sandbox Code Playgroud)

  • `此[ 'is_awesome']; //谢谢 (5认同)