1,事件篇 採用事件委託的方式定義事件比不採用委託的方式會減小對dom的引用,從而節約內存。 當dom元素從頁面移除後,使用removeEventListener將元素對事件處理函數解除引用,從而釋放事件處理函數所佔的內存。css
2,閉包內存泄漏的解決辦法 閉包保持對其定義其的函數環境中的變量的引用,容易形成內存泄漏,寫代碼時能夠解除引用,例如 function han(){ var ele=document.getElementById('id'); var id=ele.id; ele.onclick=function(){ alert(id) } ele=null } 按期的回收變量,從而釋放內存css3
3,避免重繪重排 (1)避免使用以下獲取樣式 ● offsetTop、offsetLeft、offsetWidth、offsetHeight ● scrollTop、scrollLeft、scrollWidth、scrollHeight ● clientTop、clientLeft、clientWidth、clientHeight ● getComputedStyle() ● getBoundingClientRect閉包
(2)將樣式寫在字符串中,批量設置,避免單次的設置 (3)修改DOM時可以使其隱藏暫時脫離文檔流 (4)使用文檔片斷(document fragment)在當前DOM以外構建一個子樹,再把它拷貝迴文檔 (5)使用css3硬加速,避免迴流重繪 常見的觸發硬件加速的css屬性: ● transform ● opacity ● filters ● Will-changedom