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