緩存是jQuery中的又一核心設計,jQuery自身的很多東西都依賴于緩存,比如事件、一些中間變量、動畫等。同時他還為用戶提供接口了使用緩存的接口,方便用戶在元素節(jié)點上保存自己的數(shù)據(jù),并且?guī)椭脩艚鉀Q直接把數(shù)據(jù)保存到DOM元素是可能引起的內(nèi)存泄漏、命名沖突等問題。

同時,html5提出了一種通過屬性緩存元素數(shù)據(jù)的功能,就是data-*屬性,他可以以字符串的形式保存數(shù)據(jù),并且不會和元素固有屬性沖突。jQuery的緩存提供了訪問data-*的接口,與html5標準結合更加緊密,更加規(guī)范。


提問:jQuery不同版本的緩存實現(xiàn)原理是什么?

答:jQuery1.x與jQuery2.x、jQuery3.x是不同的。

jQuery1.x系列中,需要兼容ie6、ie7等早期的瀏覽器,在ie6、ie7這樣的瀏覽器中,根據(jù)艾倫的博客,我們可以知道DOM元素與js對象相互引用,是會引起瀏覽器的內(nèi)存泄漏問題。所以jQuery1.x中,最大的問題是要防止在ie6、ie7瀏覽器上出現(xiàn)內(nèi)存泄漏。為了避免DOM元素與js對象相互引用而造成的內(nèi)存泄漏,jQuery必須從設計解決對象循環(huán)引用的問題。所以jQuery1.x將需要緩存到元素上的數(shù)據(jù),統(tǒng)一保存到了一個公共存儲對象(jQuery.cache)中,jQuery.cache中的數(shù)據(jù)和緩存持有者之間再通過一uid關聯(lián)起來。這個uid是從1開始自增的一個數(shù),同時再生成一個key(jQuery.expando)將這個uid保存在緩存所有者對象上。這樣元素對象就不會直接引用緩存的對象了,從而不會出現(xiàn)因循環(huán)引用而引起的內(nèi)存泄漏。

seo優(yōu)化培訓,網(wǎng)絡推廣培訓
        
        	<div   id=

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式