向 DOM 节点添加属性是不好的做法吗?

2024-01-07

JavaScript 允许您向任何对象(包括 DOM 节点)添加任意属性和方法。假设该属性具有良好的命名空间(类似于_myLib_propertyName)这样就不太可能产生冲突,有什么好的理由不在 DOM 节点中存储数据吗?

这样做有什么好的用例吗?

我想频繁这样做可能会导致草率的编码风格或令人困惑或违反直觉的代码,但似乎有时将“自定义”属性塞入 DOM 节点也是一种有效且权宜的技术。


不,它通常是一个bad idea在 DOM 节点上存储您自己的属性。

  • DOM 节点是宿主对象,宿主对象可以做他们喜欢做的事情。具体来说,ECMAScript 规范中没有要求主机对象允许这种扩展,因此浏览器没有义务允许它。特别是,新的浏览器可能会选择不这样做,并且依赖它的现有代码将会崩溃。
  • 并非现有浏览器中的所有主机对象都允许这样做。例如,IE 中的文本节点和所有 ActiveX 对象(例如 XMLHttpRequest 和 XMLDOM 对象,用于解析 XML)就不是这样,并且失败行为从抛出错误到静默失败各不相同。
  • 在 IE 中,可以使用以下行关闭整个文档(包括文档中的所有节点)添加属性的功能document.expando = false;。因此,如果页面中的任何代码包含此行,则所有依赖于向 DOM 节点添加属性的代码都将失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向 DOM 节点添加属性是不好的做法吗? 的相关文章

随机推荐