1

Googleクロージャを使用してコードを圧縮していますが、次のコード行に問題があります。

        eval('this.find(\''+ element_to_append_the_controller+ '\').'+controller_to_load+'(options_for_controller)');

controller_to_load要素に対して実行する必要のあるメソッド()は可変であり、取得するパラメーターに依存するため、evalを使用する必要があります。

私の問題は、オブジェクトをそのメソッドに渡さなければならないことです。そのため、変数name(options_for_controller)の文字列表現としてそれを実行していますが、クロージャーはその名前を変更し、評価文字列の変数名を変更しません。

私の解決策は次のとおりです。

  • 文字列として動的な変数名を取得する
  • オブジェクト(コールバック関数を使用)を文字列に解析する
  • これらのコード行の圧縮を無効にする

しかし、どうすればそれらの1つを実行できますか、それとも別の解決策がありますか?

ありがとう

4

2 に答える 2

3

eval('a.' + b)一部のプログラマーは、書く代わりにあなたが書くことができることに気付いていないため、evalを使用しますa[b]

eval()の代わりにこれを試してください

this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller);
于 2011-04-14T12:32:52.617 に答える
0
this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller)

AKAはevalを使用しません。

于 2011-04-14T12:32:16.417 に答える