0

誰かが次のようなjavascript関数を呼び出す方法を知っていますか

function sampleCallback() {
      alert("hello");
}

文字列「sampleCallback()」から?

私は次のような多次元配列を持っています:

hintSlidesArray = [
                    [{ "element": "noelement" }, { "hintMessage": "Welcome"}, "callback": "sampleCallback" }],
                  ];

そして、コールバック文字列をそれに渡して、配列を読み取っている場所から実行できるようにします。

4

3 に答える 3

4

関数を含むすべてのグローバル変数は、グローバル オブジェクトのプロパティです。ブラウザ環境では、これはwindow. したがって、配列添え字構文を使用して、探しているプロパティにアクセスできます。

window[hintSlidesArray[0][2].callback]();

の値を指定する必要がある場合は、またはthisを使用できます。.call().apply()

window[hintSlidesArray[0][2].callback].call(value_for_this);

ただし、オブジェクトに名前ではなく関数を格納することを検討する必要があります。オブジェクトの作成時に関数が現在のスコープ (またはグローバル スコープ) で既に定義されている場合、これは関数名から引用符を削除するのと同じくらい簡単です。

于 2012-05-18T09:49:46.663 に答える
0

callまたはapplyメソッドを使用できます。例えば:

hintSlidesArray[0][2].callback.call(this)
于 2012-05-18T09:49:13.843 に答える
0

window オブジェクトを使用して JavaScript 関数を呼び出すことができます。

var functionResult = window[myFunctionName];
于 2012-05-18T09:57:57.460 に答える