1,事件篇 采用事件委托的方式定义事件比不采用委托的方式会减少对dom的引用,从而节约内存。 当dom元素从页面移除后,使用removeEventListener将元素对事件处理函数解除引用,从而释放事件处理函数所占的内存。
2,闭包内存泄漏的解决办法 闭包保持对其定义其的函数环境中的变量的引用,容易造成内存泄漏,写代码时可以解除引用,例如 function han(){ var ele=document.getElementById('id'); var id=ele.id; ele.οnclick=function(){ alert(id) } ele=null } 定期的回收变量,从而释放内存
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-change