在dom元素中存储自定义数据

Phi*_*rch 9 javascript dom

这是错的吗?如果是这样的话?

var elm = document.getElementById("myElm");
elm.customValue = {attr1 : "test", attr2 : "test"};
Run Code Online (Sandbox Code Playgroud)

我理解如何使用数据属性,但我不想让我的dom与所有这些属性混淆.

J. *_* K. 7

这在一些浏览器中引入了内存泄漏,因为您将本机C对象(DOM元素)和JS对象绑定在一起,并且一些垃圾收集算法无法处理此问题.IE就是其中之一.

这是一篇关于IE内存泄漏的MSDN文章:http://msdn.microsoft.com/en-us/library/ie/bb250448( v = vs.85).aspx

  • 对于正确的上下文,如果有问题的对象从DOM中删除并且您希望它被垃圾收集,则这只会引入内存泄漏.并且,如果与DOM元素相关联的数据很大或者创建了数千个这些数据,然后从DOM中删除,则内存泄漏才会产生.对于在页面生命周期内保留在DOM中的对象,没有内存泄漏. (7认同)
  • 如果在JS和DOM之间存在循环引用,则只会在IE中引起内存泄漏.在这个实例中,DOM具有对JS对象的引用,但该JS对象不会引用DOM作为回报.在这种简单的情况下,内存泄漏不是问题. (4认同)