2012-04-25 1 views
3

アニメーションプラグインの設定として長いJSオブジェクトを渡すGUIを構築しました。設定の1つでは、アニメーションが完了したら関数を呼び出すことができます。残念ながら、JSオブジェクトには文字列として渡す必要があります。EVALを避けて機能させるには?

... [ 'functioncall()' ] ...... 

私のアニメーションコールバックでは、この文字列を取得して関数として実行しようとしています。どちらの例は、完全にFunctionCallを()関数を呼び出し

var HookFunction=new Function(OS.path_jscall[index].path_jscall[0][i]); 
HookFunction(); 

最初の試みは、私がより好ましいアプローチそうのような設定をしました

eval(OS.path_jscall[index].path_jscall[0][i]) 

...完璧に動作しますが、evalを使用しています。私はfunctioncall()に(これ)を渡す方法はわかりません...

functioncall(obj){ console.log(obj); }; 

すべてがウィンドウを参照し続けます。何か案は?ありがとう!

+0

[Javascript: "this"変数を簡単に設定する方法は?](http://stackoverflow.com/questions/456967/javascript-how-to-set - this-variable-easily) –

+0

"JSオブジェクトに文字列として渡されなければなりません"なぜ? – outis

答えて

3

HookFunctionが名前であると仮定すると、あなたはのcall()またはapply()

HookFunction.call(this,arg1,arg2,...,argN); 

//or 

HookFunction.apply(this,[arg1,arg2,...,argN]); 

基本的な違いのいずれかを行うことができます2はcall()があなたの "this"とそれの後の列挙された引数リストを受け取るということです。apply()は "this"と引数の配列を受け取ります

+0

完璧に作業しました!ありがとう、それは文字列呼び出しに 'これ'を追加する余分なステップが必要:)あなたは素晴らしいです! – Aaron

3

機能を呼び出すときは.callを使用してください。 .callは、最初のパラメータをthis変数に割り当てます。

var myFunction = function(arg1, arg2) { 
    alert(this); 
} 

myFunction.call(this, "arg1", "arg2"); 

あなたの第二の例を使用して、あなたがこれを行うことができます:

HookFunction.call(this); 
関連する問題