2011-04-14 91 views
1

我使用谷歌關閉壓縮我的代碼,但我有以下行的代碼中的問題:問題的評估和谷歌關閉編譯器

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

我不得不使用eval,因爲該方法(controller_to_load)我必須執行元素是可變的,並取決於我得到的參數。

我的問題是我必須將一個對象傳遞給該方法,所以我以變量名稱(options_for_controller)的字符串表示形式進行操作,但是閉包會更改該名稱,並且不會更改變量名稱在我的評估字符串。

我的解決辦法是:

  • 獲取變量名動態的字符串
  • 解析對象(回調函數)字符串
  • 禁用壓縮這些行代碼

但我怎麼能做其中一個或有另一種解決方案?

感謝

回答

3

有些程序員使用eval,因爲他們沒有意識到,而不是寫eval('a.' + b)你可以寫a[b]

嘗試,而不是你的eval()

this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller); 
+0

感謝,您的權利這一點,替換這一切evals動態執行類型,真棒。 – LeonS 2011-04-14 12:48:29

0
this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller) 

AKA不使用eval。