1

私はこれを見ました:

変数で指定された JavaScript 関数の呼び出し

しかし、それは私の質問には答えません。

これは通常動作します:

window['class']['sub_class']['function_name'](data);

しかし今、私はあらゆる深さを処理できる一般的な関数を作成しようとしています:

function callbackFunction(callback, data){
    //callback = a.b.c, or a.b, or a
    callback = explode(callback);      

    //I need to be able to call callbackFunction and somehow callback and form their proper form below
    window[callback.a](data);
    //or
    window[callback.a][callback.b](data);
    //or
    window[callback.a][callback.b][callback.c](data);
}
4

2 に答える 2

0

オブジェクト/サブオブジェクト/などへの参照を必要なだけ連鎖させることができます。ポイントで区切られた文字列 (例: "document.blah.blah2.method") がある場合は、それを個々のトークン (例: ["document", "blah", "blah2", "method"]) に分割する必要があります。

次に、チェーンをループするだけです。

var c = window;
for (var i = 0; i < chain.length - 1; i++) {
  c = c[chain[i]];
}
c[chain[chain.length-1]](some_arguments);
于 2013-08-17T20:22:59.120 に答える