我有一个方法的名称作为JavaScript变量的字符串,我想获得它的调用的结果变量:摆脱EVAL
var myMethod = "methodToBeCalled";
var result;
eval("result = "+myMethod+"();")
这工作,也没有问题。但是这个代码对于Google Closure编译器来说是不可接受的。我如何修改它以使用它?谢谢!
编辑:
似乎提出的解决方案时,该方法的名称是一些物体的内部不起作用,例如:假设你是不是在某些嵌套范围
var myFunction = function() { return "foo!" }
var myObject = {
itsMethod: function() { return "foo!" }
};
...
var fstMethodToCall = "myFunction"
var sndMethodToCall = "myObject.itsMethod";
...
window[fstMethodToCall](); // foo!
window[sndMethodToCall](); // undefined
又是怎么回事窗口[ “SomeObject.itsMethod”] - 它似乎不起作用? – 2012-04-27 17:40:31
@Vojtěch假设'SomeObject.itsMethod'为顶级功能的字符串值的名称,尝试窗口[SomeObject.itsMethod](); – Matt 2012-04-27 17:41:48
我的意思是'var Object = {itsMethod:function(){...}}; var call =“Object.itsMethod”;窗口[call]();' – 2012-04-27 17:43:31