2018年3月3日 星期六

LimeJS : 存取物件的屬性

LimeJS 可以在 build 時利用 -a 的參數進入「ADVANCED_OPTIMIZATIONS」 mode,也是就幫我們把程式碼「瘦身」。主要就是將變數或函數名稱改短一點,處理完的程式檔案小很多。不過,以前遇過加了 -a ,產出的程式卻出現不明的錯誤而無法執行的情形。最近新程式中使用到 JSON 格式資料來匯出、匯入,加上 -a 參數 build 後所產生的程式碼無法正確的匯出、匯入我要的資料。想到「ADVANCED_OPTIMIZATIONS」會做的動作:「改變數名稱」,靈光一閃,找到兇手了!

先來看看 W3Schools 中提到如何存取 object 的 property:

The syntax for accessing the property of an object is:
objectName.property          // person.age
or
objectName["property"]       // person["age"]
or
objectName[expression]       // x = "age"; person[x]

我習慣用第一種方式,以點「.」來存取內容,例如:

nodes.lines

一但使用「ADVANCED_OPTIMIZATIONS」mode,名稱可能會被改變,例如:

a.b

這樣一來,我就沒辦法正確的取得我要的「lines」內容。

實證的結果是在存取物件時,使用 W3Schools 中建議的第二種方式,也就是:

nodes['lines']

語法改了以後,使用「ADVANCED_OPTIMIZATIONS」mode 來 build 的 LimeJS 程式碼就可以正確的執行了。



沒有留言:

張貼留言

 
© 2009. Design by Pocket