我注意到很多jQuery插件开发人员使用$ .data函数来存储某种类型的操作的状态。
$.data(this, 'playing', true);
,而不仅仅是分配属性插件对象实例:
this.playing = true;
这是怎么回事吗?使用$ .data有一些好处吗?
我注意到很多jQuery插件开发人员使用$ .data函数来存储某种类型的操作的状态。
$.data(this, 'playing', true);
,而不仅仅是分配属性插件对象实例:
this.playing = true;
这是怎么回事吗?使用$ .data有一些好处吗?
根据docs,它避免了循环引用的内存泄漏。
另外,.data()
不会与HTMLElement
的现有方法和属性冲突,这是更有前途的证明。
通过面向未来的,我的意思是,一个简单的例子是存储在其playing
财产audio
/video
元素的显示状态,你的代码的作品,一切都很好。明天,WHATWG决定将playing
属性添加到HTMLMediaElement
DOM界面和繁荣!您的代码中断或意想不到的副作用。
这当然只是一个愚蠢的例子来说明未来冲突的可能性,在上面的用例中通常只是读取元素的paused
属性。
另一个例子是被设置value
财产 - 你有span
测试它,它工作正常,那么你船的代码,另一个开发人员试图调用一个输入元素上的插件,它会与value
的冲突输入。 $.data
很容易避免这种问题。
谈到将元数据存储在DOM元素的自定义属性中的一般含义时,未来冲突的可能性总是很小。即使赔率往往非常低,但感觉更多的未来证明并且没有什么可担心的事情是很好的。