gpt4 book ai didi

javascript - jQuery 如何使用 .data() 存储数据?

转载 作者:可可西里 更新时间:2023-11-01 01:24:46 26 4
gpt4 key购买 nike

我有点困惑 jQuery 如何使用 .data() 函数存储数据。

这是不是叫做 expando 的东西?或者这是使用 HTML5 Web 存储,尽管我认为这不太可能?

文档说:

The .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.

当我读到 expando 时,它似乎有内存泄漏的风险。不幸的是,我的技能不足以阅读和理解 jQuery 代码本身,但我想知道 jQuery 如何使用 data() 存储此类数据。

最佳答案

基本上 jQuery 在内部 javascript 对象中保存您使用 data(name, value)/data(name) 存储/检索并使用 removeData(name) 删除的信息名为缓存。剩下的只是一点点 javascript 魔法,让它工作并保持所有关联正确。

哦,然后回答你问题的第一部分。它既不是 expando 也不是 HTML5 WebStorage。

为了更正我自己,我认为 jQuery 确实有一次使用了 expando。它为您使用 data() 的那些元素设置一个属性,以向它们存储信息。属性名称看起来像这样

"jQuery" + now() //e.g. jQuery1268647073375

顺便说一句。 now() 是一个返回 (new Date).getTime()

的内部函数

值是由 jQuery 生成的 UUID

这样 jQuery 以后可以从它的内部缓存中检索正确的关联数据。

因此,如果您担心 IE 中的 expando,我记得您不能在其中删除它们,那么泄漏应该是最小的,因为 jQuery 仅对您存储数据的每个元素使用 1 个 expando。除非您对 1000 多个元素调用 data(),否则我看不到内存问题

关于javascript - jQuery 如何使用 .data() 存储数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2446098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com