1

重複の可能性:
変数で指定された JavaScript 関数の呼び出し

関数を開始するための呼び出しとして変数の値を使用したいのですが、それが可能かどうかわかりません。

私が持っていると言う:

function myFunction(){
    // Do something
}

var functionName = "myFunction";
functionName(); // This should run the function named myFunction

これはできることでしょうか?

4

1 に答える 1

5

あなたはいくつかのことをすることができます:

//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、危険であり、私はそれをお勧めしません。

あなたのフィドルに基づいて

あなたrightleft関数は無名関数のローカルスコープで定義されています。これは、それらがグローバルオブジェクトの一部ではないことを意味します。window上記で説明した2番目の方法(独自のマップの作成)を使用する必要があります。

var directions = {
    right: function() {
        ...
    },
    left: function() {
        ...
    }
    ...
};

var direction = "right";
directions[direction]();
于 2012-09-19T22:58:46.877 に答える