为什么用相同选择拿到的jquery对象的uid是一样的?

来源:4-6 实例方法的设计

chen87870098

2017-01-16 10:02

比如

var body1 = $("body")

var body2 = $("body")

他们的uid都是jQuery191019618577925292002这个缓存池中的3号位置,这是为什么

写回答 关注

2回答

  • 精慕门5492129
    2018-10-11 16:40:34

    相同的DOM元素或DOM对象,jquery源码中$().data()代码,有elem = this[ 0 ],elem为DOM元素,两次为相同的对象,uid相同,缓存区相同,因此会被覆盖。而$.data()代码中,elem是jQuery的实例对象,不同的实例对象,分配了不同的缓存区,$.data()不覆盖。

  • 慕粉0828492140
    2017-01-22 09:07:45

    是DOM元素,通过分配一个唯一的关联id把DOM元素和该DOM元素的数据缓存对象关联起来,关联id被附加到以jQuery.expando的值命名的属性上,数据存储在全局缓存对象jQuery.cache中。在读取、设置、移除数据时,将通过关联id从全局缓存对象jQuery.cache中找到关联的数据缓存对象,然后在数据缓存对象上执行读取、设置、移除操作。

jQuery源码解析(架构与依赖模块)

由浅入深地剖析jQuery库的设计与实现,揭开框架背后的秘密

84047 学习 · 280 问题

查看课程

相似问题