在 JavaScript 中,關於 Object 我們可以用「點」(Dot Notation) 或是「中括號」(Square Bracket Notation) 來取出它的內容,照說這兩種方法都可以取得相同的內容,不過,當物件的屬性或方法名稱我們想以變數來代替或是名稱中帶有非一般字元時,用「中括號」才會方便。今天在擴充用 LimeJS 寫的程式時,發現另外一種狀況非得用中括號的方式來表示要取哪一個內容了!
之前用 LimeJS 在寫程式就發生過用 source 執行的結果和用 build 過的執行結果不同,甚至發生錯誤而中斷程式流程的情形。主要是因為,當我們在 LimeJS 加上「-a」的參數 build 完的程式碼,它會把變數、函數的名稱......改為較簡單的名稱,也就是和我們在 source codes 中的名稱不同,因此在使用或呼叫時,可能會因為名稱不同而出錯。
今天為了把最近寫的程式改為可以讓使用者可以傳入產生自訂題庫的程式碼,發現原來用 object.xxx 的方式取得物件內容的部份都變成 undefined ,交叉比對了半天才試出問題點。把它們通通改為 object[xxx] 才順利達成我預設的目標。
寫程式常常這樣,只是因為表示式的不同,效果也大不同。這一關過了,功力又提昇了一點點,真開心!
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言