4

eval() を使用せずに、設計時に不明な (ただし信頼できる) コンテンツを含む関数を実行時に作成する方法はありますか?

基本的に、何度も呼び出されるため、パフォーマンス上の理由から「ハードコードされた」関数を作成しようとしています。多くの呼び出しが開始される直前に、実行時に「ハード コーディング」のみが 1 回行われます。

(未テストの例)

var strFuncString = 'function(){';
for (some loop)
{
    strFuncString+='DoSomething()'; //if this can be made to reference an object obtained for the for-loop then even better - i.e. Myfunc+=Obj.DoSomething
}
var MyFunc = eval(strFuncString  '}');

SomeProcessThatCallsItsArgALot(MyFunc);

デバッガーでこれを試しましたが、当然のことながら機能しませんでした

((function(){console.log(1);} )+( function(){console.log(2);}))()
4

1 に答える 1

4

使用できますnew Function(bodytext)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Functionを参照してください

于 2013-06-05T10:52:27.700 に答える