Possible Duplicate:
Calling a JavaScript function named in a variable
我想用一个变量的值作为调用来启动一个函数,但我不确定是否可行?
说我有:
function myFunction(){
// Do something
}
var functionName = "myFunction";
functionName(); // This should run the function named myFunction
这是可以做到的吗?
你可以做一些事情:
//if the function is in the global scope:
window["myFunction"]();
//or
var functionName = "myFunction";
window[functionName]();
或者维护你自己的 map :
var functions = {
myFunction: function() {
...
},
...
myOtherFunction: function() {
...
}
};
那么下面的任何一个都可以工作:
functions.myFunction(); //will work
functions["myFunction"](); //will also work;
var functionName = "myFunction";
functions[functionName](); //also works
当然可以使用eval
:
eval(functionName + "()");
但是 eval
很危险,我不推荐它。
基于您的 fiddle
您的 right
和 left
函数已在匿名函数的本地范围内定义。这意味着它们不是全局window
对象的一部分。您应该使用我上面描述的第二种方法(构建您自己的 map ):
var directions = {
right: function() {
...
},
left: function() {
...
}
...
};
var direction = "right";
directions[direction]();