第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

章節(jié)
問答
課簽
筆記
評論
占位
占位

jQuery的緩存系統(tǒng)

jQuery從1.2.3版本引入數(shù)據(jù)緩存系統(tǒng),主要的原因就是早期的事件系統(tǒng) Dean Edwards 的 ddEvent.js代碼帶來的問題:

1.沒有一個系統(tǒng)的緩存機制,它把事件的回調(diào)都放到EventTarget之上,這會引發(fā)循環(huán)引用
2.如果EventTarget是window對象,又會引發(fā)全局污染不同模塊之間用不同緩存變量

一般jQuery開發(fā),我們都喜歡便捷式的把很多屬性,比如狀態(tài)標(biāo)志都寫到dom節(jié)點中,也就是HTMLElement。

好處 : 

直觀,便捷。

壞處 :

1.循環(huán)引用
2.直接暴露數(shù)據(jù),安全性?
3.增加一堆的自定義屬性標(biāo)簽,對瀏覽器來說是沒意的
4.取數(shù)據(jù)的時候要對HTML節(jié)點做操作

jQuery緩存系統(tǒng)的真正魅力在于其內(nèi)部應(yīng)用中,動畫、事件等都有用到這個緩存系統(tǒng)。試想如果動畫的隊列都存儲到各DOM元素的自定義屬性中,這樣雖然可以方便的訪問隊列數(shù)據(jù),但也同時帶來了隱患。如果給DOM元素添加自定義的屬性和過多的數(shù)據(jù)可能會引起內(nèi)存泄漏,所以要盡量避免這么干。

A.允許我們在DOM元素上附加任意類型的數(shù)據(jù),避免了循環(huán)引用的內(nèi)存泄漏風(fēng)險
B.用于存儲跟dom節(jié)點相關(guān)的數(shù)據(jù),包括事件,動畫等
C.一種低耦合的方式讓DOM和緩存數(shù)據(jù)能夠聯(lián)系起來

 

對于jQuery來說,數(shù)據(jù)緩存系統(tǒng)本來就是為事件系統(tǒng)服務(wù)而分化出來的,到后來,它的事件克隆乃至后來的動畫列隊實現(xiàn)數(shù)據(jù)的存儲都是離不開緩存系統(tǒng),所以數(shù)據(jù)緩存也算是jQuery的一個核心基礎(chǔ)了。

jQuery的數(shù)據(jù)緩存接口:

jQuery.data( element, key, value )
.data( )

對于jQuery.data方法,原文如下:

The jQuery.data() method allows us to attach data of any type to DOM elements in a way that is safe from circular references and therefore from memory leaks. We can set several distinct values for a single element and retrieve them later:

在jQuery的官方文檔中,提示用戶這jQuery.data()是一個低級的方法,應(yīng)該用.data()方法來代替。$.data( element, key, value )可以對DOM元素附加任何類型的數(shù)據(jù),但應(yīng)避免循環(huán)引用而導(dǎo)致的內(nèi)存泄漏問題。

二者都是用來在元素上存放數(shù)據(jù)也就平時所說的數(shù)據(jù)緩存,都返回jQuery對象,但是內(nèi)部的處理確有本質(zhì)的區(qū)別。

通過代碼對比,參考右邊代碼:

任務(wù)

?不會了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數(shù)過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務(wù)號

綁定后可得到

  • · 粉絲專屬優(yōu)惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復(fù)提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關(guān)注公眾號
關(guān)注后,及時獲悉本課程動態(tài)

舉報

0/150
提交
取消
全部 精華 我要發(fā)布
全部 我要發(fā)布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發(fā)表

為什么扣積分?

本次提問將花費2個積分

繼續(xù)發(fā)表請點擊 "確定"

為什么扣積分?