您好,登錄后才能下訂單哦!
Javascript語言有自己的一套內存回收機制,一般情況下局部變量和對象使用完就會被系統自動回收,無需我們理會。但是碰到閉包的情況這些變量和對象是不會被回收的,對于普通的web站點,頁面刷新或跳轉這些內存也會被回收。如果是單頁web站點,頁面切換及數據請求都是通過ajax無刷新機制實現的,頁面資源無法自動回收,時間長了會嚴重影響性能,造成內存泄漏甚至頁面崩潰直接退出,這時候手動釋放不用資源就非常必要了,包含刪除dom、釋放對象等
想手動釋放含有閉包的對象時,必須先將引用對象屬性的事件刪除,然后設置為null方可消耗對象。這種事件一般是可以多次執行的,如原生事件的監聽,定時器。一般比較有名較完善的插件都有帶銷毀資源方法,如iscroll插件,里面就有一個destroy原型方法,它里面也就是移除事件監聽和刪除定時器。大家可以去看看源碼
什么是閉包?
私有作用域,把一些信息保存下來,對于保護這個功能來說,我之前在我項目中封裝過很多小的插件,但是這些插件,我怕別人用我的插件的時候,所以我會首先把所有的東西全部放在一個閉包當中保護起來,這樣就防止了全局變量的污染,至于保存的話,之前在做項目的時候,循環事件綁定,都已經變成全局下面的了,我就會用閉包機制形成一個不銷毀的作用域
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。