JavaScript - 通过字符串调用函数

时间:2014-12-16 03:56:28

标签: javascript

这个问题已经以不同的方式存在,但我的代码大多不同,所以我没有从其他答案中得到解决方案。这是一个示例代码:

http://jsfiddle.net/e52n28xs/

我想要启动这样的功能:

var test1 = {
    start: function() { }
};
var fn = 'test1';
fn.start();

我知道以下工作,但我需要字符串选项。

test1.start();

也许那不可能?

2 个答案:

答案 0 :(得分:0)

您可以使用eval()功能

执行此操作
var test1 = {
    start: function() { }
};
var fn = 'test1';
eval(fn).start()

DEMO

答案 1 :(得分:-2)

根据您运行此功能的this的值,其中任何一个都可以使用:

window['test1'].start();

或者

this['test1'].start();

显然,您可以对函数名称本身执行相同的操作,例如:

test1['start']();

this['test1']['start']();
// same as:     var test1 = this['test1']; test1['start']();

如果你想让整个事情成为字符串,那么:

eval('test1.start()');

如果您使用的是var,那么这也会有效,在之前的字符串版本中,您必须有一个容器对象可供查询。