あなたはいくつかのことをすることができます:
//if the function is in the global scope:
window["myFunction"]();
//or
var functionName = "myFunction";
window[functionName]();
または、独自のマップを維持します。
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
、危険であり、私はそれをお勧めしません。
あなたのフィドルに基づいて
あなたright
とleft
関数は無名関数のローカルスコープで定義されています。これは、それらがグローバルオブジェクトの一部ではないことを意味します。window
上記で説明した2番目の方法(独自のマップの作成)を使用する必要があります。
var directions = {
right: function() {
...
},
left: function() {
...
}
...
};
var direction = "right";
directions[direction]();