現時点では、次のような単純な JavaScript クラスがあります。
function MyClass() {
// ... some code ...
this.Create = function() {
funcName = 'myTestFunc()';
cTimer = setTimeout(funcName, 1000);
}
// ... more code ...
var myTestFunc = function() {
alert ('everything\'s OK!');
}
// ... more code ...
}
それをテストするために、私はこのコードを使用しています:
x = new MyClass();
x.Create();
この関数を名前で実行するのに問題があります。setTimeout 呼び出しの代わりに置くと正常にeval(funcName);
動作しますが、なぜこのように動作しないのかわかりません。
もちろん、これはより複雑なコードの一部ですが、残りのコードはこの問題とは無関係です。
setTimeout
私の質問は明らかです-関数の引数として設定された名前で関数を実行する方法は? 出来ますか?
注: この関数を公開する ( this.myTestFunc = ...
) ことはできません。
アップデート:
funcName = "myTestFunc()";
はほんの一例です。実際のコードでは、次のようになりfuncName = getRandomEffectFunctionName();
ます。ただのランダム値です。