为什么要使用$ .data而不是将属性分配给"这个"?

时间:2014-03-06 22:11:41

标签: javascript jquery oop jquery-plugins jquery-data

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

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

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

this.playing = true;

这是什么交易?使用$ .data有什么好处吗?

1 个答案:

答案 0 :(得分:3)

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

此外,.data()HTMLElement的现有方法和属性不冲突,更具未来性。


通过未来的证明,我的意思是,一个简单的例子是将audio / video元素的播放状态存储在其playing属性中,您的代码可以正常运行。然后明天,WHATWG决定将playing属性添加到HTMLMediaElement DOM界面并繁荣!您的代码中断或有意想不到的副作用。

这当然只是一个愚蠢的例子来说明未来冲突的可能性,在上面的用例中你通常只读取元素的paused属性。

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

在将元数据存储在DOM元素的自定义属性中的一般意义上讲,未来冲突的概率很小。虽然赔率通常非常低,但是感觉更有前途的证据并且少担心一件事情是很好的。