我有一些 HTML 元素用作 ES6 Maps 中的键,我还有一个“WeakSet”,其中包含相同的 HTML 元素作为值,现在这些 HTML 元素最终将通过某些其他功能从 DOM 中删除,然后它们会被删除吗? WeakSet 收集的垃圾,即使它们仍然用作 Map 中的键?
不,只要它们是
Map
的一部分,它们就不会被垃圾收集(并且地图本身不会被垃圾收集)。您仍然可以通过迭代地图来访问它们.keys()
。随后,它们仍将是 WeakSet
的一部分(只要集合本身不被垃圾收集)。
为了避免这种情况,请使用
WeakMap
而不是 Map
,它不会按住按键。