3

長い JS オブジェクトをアニメーション プラグインの設定として渡す GUI を作成しました。設定の 1 つは、アニメーションが完了すると、ユーザーが関数を呼び出すことを可能にします。残念ながら、文字列として JS オブジェクトに渡す必要があります。

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

アニメーション コールバック内で、この文字列を取得し、関数として実行しようとしています。

最初の試行は完全に機能しますが、評価を使用します...

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

次のようなより好ましいアプローチをセットアップしました。

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

どちらの例も functioncall() 関数を完全に呼び出します。(this) を functioncall() に渡す方法がわかりませんが...

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

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

4

2 に答える 2

3

HookFunctionそれが名前であると仮定すると、call()またはのいずれかを行うことができますapply()

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

//or

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

2つの基本的な違いは、call()「this」とその後の引数の列挙リストをapply()受け取り、「this」と引数の配列を受け取ることです

于 2012-04-25T00:22:08.600 に答える
3

.call関数を呼び出すときに 使用します。.call最初のパラメーターを変数に割り当てthisます。

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

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

2 番目の例を使用すると、次のことができます。

HookFunction.call(this);
于 2012-04-25T00:19:16.187 に答える