【发布时间】:2015-01-04 23:51:18
【问题描述】:
我想将 Javascript 中的对象存储在 DOM 节点的自定义属性中。我试过 setAttribute/getAttribute,但他们将属性转换为文本。
假设我已经完成了
node = document.getElementById( 'SAMPLE' );
object = { test: function( ){ stuff; } };
这在我测试过的任何地方都不起作用
node.setAttribute( 'info', object );
val = node.getAttribute( 'info' ) ;
因为它给 val 留下一个字符串值。
如果我这样做
node[ 'info' ] = object;
然后
val = node[ 'info' ];
稍后在我的脚本中归还我的对象。
这可以在 HTML5 之前的浏览器(如旧 IE)中工作吗?安全吗?
【问题讨论】:
-
您可以将其作为属性“附加”,但通常您应该不理会主机对象,仅通过其发布的 API 使用它们。
-
只有一个问题.. 为什么?
-
只要您使用合理的防碰撞名称就没有问题,尤其是在您仅存储原始数据时。如果您要存储对象,尤其是保存函数的对象,您可以创建一个循环引用,旧的 IE 可能难以检测到,从而导致内存泄漏。
-
我正在尝试使程序全球免费。也许不是最好的主意?这是关于内存泄漏的一个很好的警告。我会更深入地研究这个问题。
标签: javascript dom setattribute getattribute