2017-06-09 3 views
0

として目的関数を表す文字列を渡しますか?このコードは動作しません、コールバック

更新:

私はfunctionNameを事前に知りません。 'my.testFunction'や 'my.test.another.function'などである可能性があります。

私は検証ハンドラを作成しています。私のすべてのjsが知っている文字列は、オブジェクト。

+0

「my.testFunction」という名前の変数がありますか? – Rajesh

+0

'eval(functionName + '()')'は動作します。これは、ブラケット表記を使用してオブジェクトの直接プロパティにのみアクセスできるためではありません。 – raina77ow

+0

明確な問題文なしに質問として終了するように投票してください。なぜこのコードがうまくいかないのかといったデバッグヘルプを求めている投稿 –

答えて

1

これは動作するはずです。

var my = { 
    testFunction: function(text) { 
     alert(text); 
    } 
}; 

// the string can't be evaluated as nested object hierarchy. 
// split it to address the several nodes and properties 
var functionName = "my.testFunction".split('.'); 

var f = window[functionName[0]][functionName[1]]; 

f('yeha'); 
+1

コードの説明 –

+0

質問は修正する方法ではありません。その理由については、うまく動作しません。 – Rajesh

+0

'my.testFunction'がウィンドウに表示されていません。あなたは 'window ['my']'でオブジェクトを取得します。だから 'window ['my']。testFunction'は動くでしょう –

関連する問題