chen87870098
2017-01-16 10:02
比如
var body1 = $("body")
var body2 = $("body")
他们的uid都是jQuery191019618577925292002这个缓存池中的3号位置,这是为什么
相同的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源码解析(架构与依赖模块)
84047 学习 · 280 问题
相似问题