課程
/前端開發
/jQuery
/jQuery源碼解析(架構與依賴模塊)
比如
var body1 = $("body")
var body2 = $("body")
他們的uid都是jQuery191019618577925292002這個緩存池中的3號位置,這是為什么
2017-01-16
源自:jQuery源碼解析(架構與依賴模塊) 4-6
正在回答
相同的DOM元素或DOM對象,jquery源碼中$().data()代碼,有elem = this[ 0 ],elem為DOM元素,兩次為相同的對象,uid相同,緩存區相同,因此會被覆蓋。而$.data()代碼中,elem是jQuery的實例對象,不同的實例對象,分配了不同的緩存區,$.data()不覆蓋。
是DOM元素,通過分配一個唯一的關聯id把DOM元素和該DOM元素的數據緩存對象關聯起來,關聯id被附加到以jQuery.expando的值命名的屬性上,數據存儲在全局緩存對象jQuery.cache中。在讀取、設置、移除數據時,將通過關聯id從全局緩存對象jQuery.cache中找到關聯的數據緩存對象,然后在數據緩存對象上執行讀取、設置、移除操作。
舉報
由淺入深地剖析jQuery庫的設計與實現,揭開框架背后的秘密
1 回答為什么jQuery作者把jQuery對象設計成類數組對象?
2 回答選擇器選擇ID不是只有一個的嗎?用[0]和不用[0]一樣呀,有什么意義嗎
1 回答jQuery對象和aQuery對象的區別問題
3 回答關于Cache對象和uid
2 回答jQuery對象與aQuery對象的差別與原因?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-10-11
相同的DOM元素或DOM對象,jquery源碼中$().data()代碼,有elem = this[ 0 ],elem為DOM元素,兩次為相同的對象,uid相同,緩存區相同,因此會被覆蓋。而$.data()代碼中,elem是jQuery的實例對象,不同的實例對象,分配了不同的緩存區,$.data()不覆蓋。
2017-01-22
是DOM元素,通過分配一個唯一的關聯id把DOM元素和該DOM元素的數據緩存對象關聯起來,關聯id被附加到以jQuery.expando的值命名的屬性上,數據存儲在全局緩存對象jQuery.cache中。在讀取、設置、移除數據時,將通過關聯id從全局緩存對象jQuery.cache中找到關聯的數據緩存對象,然后在數據緩存對象上執行讀取、設置、移除操作。