時常看 Addy Osmani 的文章,這次他分享了在 Web development 上需要的一些知識,主要著重在 JavaScript 的 Performance 和 Memory usage。

在 Memory 的部分:

提到 Garbage Collection 的觀念,在大部分的狀況下我們是不需要主動地去對 Object 做 De-reference 的動作,因為 Browser 自己有一套回收的機制。盡量避免使用 delete 關鍵字,因為 JavaScript engine 在 runtime 的時候,會去對一些 Object 做最佳化,若 Object 的結構不會更動,會被判為 Hot object,若有所變更會判為 Slow Object。這邊我有點不是很瞭,可能用了 delete 會影響 runtime 時的 Performance 吧!

var o = { x: 1 };
delete o.x; // true
o.x; // undefined

 

另外設定一個 Object 成 Null ,並不是真的去清空 Object 的所有屬性與方法,只是很單純的將 Object 的 Reference 指向了 Null Object。指向 Null 會比用 delete 來的好,但似乎也是沒啥必要。

var o = { x: 1 };
o = null;
o; // null
o.x // TypeError

 

還有若宣告了一個 Global 的 Object,它被 GC 的狀況只有在 Refresh Page, Navigate 到其他 Page 和關掉 Tab 或 Browser。

總而言之:

1. 盡量不要手動去 De-reference,而應該將 variable 放在 Local Scope 來讓 GC 自動回收。

2. 在移除 Dom 前,記得要做 unbind event 的動作

3. 若有 local 的 data cache 不需要了,記得清掉

 

在 Performance 的部分:

主要在介紹一些 JavaScript 的寫法,如何最佳化 Application,如何去評估 Performance 等等。太多了....有興趣的可以到原文去看看。

arrow
arrow
    文章標籤
    JavaScript
    全站熱搜
    創作者介紹
    創作者 zack9433 的頭像
    zack9433

    About Time

    zack9433 發表在 痞客邦 留言(0) 人氣()