为什么我可以将 JavaScript 符号绑定(bind)到除 HTMLElement 的 style
属性之外的所有内容?
https://jsfiddle.net/elgs/ftj9zx42/3/
这是 HTML:
<div id='a'></div>
这是 Javascript:
const a = document.querySelector('#a');
a.classList._someSymbol = Symbol('some_symbol');
console.log(1);
a.style._someSymbol = Symbol('some_symbol');
console.log(2);
这是输出:
1
(index):35 Uncaught TypeError: Cannot convert a Symbol value to a string
at window.onload ((index):35)
更新:
整个故事是我正在编写一个代理,它将一个 Symbol 附加到每个属性作为 get 陷阱中的标识符,这无意中包含了样式。我最终将只包括我感兴趣的属性,不包括样式。但现在我收到了这个错误,我很好奇为什么会这样。
最佳答案
它依赖于浏览器。由于 HTML 是一种标准(它是关于用户代理应如何解释文档的一系列指南)。
因此,您上面的示例在 FireFox 中确实有效,但在 Google Chrome 中无效。 如果您想了解原因,我建议您查看浏览器的源代码,它似乎正在转换您的符号 toString。
关于javascript - 无法将 Javascript 符号绑定(bind)到 HTMLElement.style,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57486756/