gpt4 book ai didi

javascript - 为什么使用 $.data 而不是将属性分配给 "this"?

转载 作者:行者123 更新时间:2023-11-28 19:57:42 25 4
gpt4 key购买 nike

我注意到很多 jQuery 插件开发人员使用 $.data 函数来存储某种类型操作的状态。

$.data(this, 'playing', true);

而不是仅仅将属性分配给插件对象实例:

this.playing = true;

这是怎么回事?使用 $.data 有什么好处吗?

最佳答案

根据docs ,它避免了循环引用的内存泄漏。

此外,.data() 不会与 HTMLElement 的现有方法和属性冲突,更适合 future 。

<小时/>

通过 future 的证明,我的意思是,一个简单的示例是将 audio/video 元素的播放状态存储在其 playing 属性中,你的代码可以工作,一切都很好。然后明天,WHATWG 决定将 playing 属性添加到 HTMLMediaElement DOM 界面和繁荣!您的代码中断或有意外的副作用。

这当然只是一个愚蠢的示例,用于说明 future 发生冲突的可能性,在上面的用例中,您通常只读取元素的 paused 属性。

另一个例子是设置 value 属性 - 您使用 span 测试它,它工作正常,然后您发送代码,另一个开发人员尝试调用输入元素上的插件,它将与输入的冲突。使用 $.data 可以轻松避免此类问题。

从一般意义上讲,将元数据存储在 DOM 元素的自定义属性中, future 发生冲突的可能性总是很小。尽管几率通常很低,但感觉更有 future 感并且少了一件需要担心的事情,这很好。

关于javascript - 为什么使用 $.data 而不是将属性分配给 "this"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22237190/

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