javascript - javascript 中的 Map/Object 不支持 Element 作为 key

标签 javascript

我的问题是如何使用 Element 作为普通 javascript 中的键。在 ES6 之前,Object 和其他类似映射的结构使用 toString() 来标识键——这意味着无法区分元素。

https://code.google.com/p/closure-library/issues/detail?id=541适用于 google 闭包库,但普通 javascript 也有完全相同的问题。

ES6 Map 解决了这个问题,这太棒了!但像往常一样,不支持 ES6 的旧浏览器怎么样...

最佳答案

ES5 中此问题的通常解决方案是生成一个唯一的字符串键(将单调递增的数字转换为字符串就可以了),将其作为自定义属性分配给 DOM 对象,然后使用该字符串作为键入对象/ map 。

这会给你一个唯一的字符串,你可以用作 map 键,如果再次给你 DOM 对象并要求你在 map 中查找它,你可以检查它的特殊键,如果找到的话,用它来检查 map 。如果 DOM 对象没有唯一键,那么它一定尚未位于这些映射之一中。

这是一个自动实现此功能的 Javascript 对象 (objectSet):https://github.com/jfriend00/Javascript-Set/blob/master/objectset.js与此答案中的代码相关:Mimicking sets in JavaScript? .

或者,这是 partial polyfill for the ES6 Set object在使用 Set 中的对象时自动实现此字符串键生成。

关于javascript - javascript 中的 Map/Object 不支持 Element 作为 key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31487950/

相关文章:

javascript - Soundcloud JS SDK - 如果应用程序安装在 iOS 上,则 SC.Connect() 回调窗口无法关闭

javascript - Windows 应用商店应用程序 - WinJS : 0x800a1391 - JavaScript runtime error: 'Windows' is undefined

javascript - d3.js 和 csv 文件图形宽度的数据可视化

javascript - 这个 Javascript 1.2 代码片段出了什么问题?

javascript - Javascript 中的构造函数属性是否有好的用例?

javascript - React - 注入(inject)的组件与父页面 DOM 不正确匹配

Javascript - 通过内部文本获取元素ID

javascript - 为什么 float 的 `a * b`和 `a *= b`的结果不同

javascript - RequireJS 减慢了我的网络应用程序的加载速度

javascript jquery抓取嵌套属性