我的问题是如何使用 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/