我正试图用WeakMaps做显而易见的事情:我想创建一个弱引用。特别是,我希望有一个事件侦听器列表,而该列表不会影响侦听器的生活。
所以我很高兴能找到WeakMaps,直到我发现它们只是为了满足一个(相当罕见)用例而构建的,即扩展原本密封的对象。我想不出我什么时候想这么做,但我一直需要听众名单。
这有可能以我从未想过的聪明方式使用WeakMaps吗?
不,不可能使用WeakMaps创建弱引用。WeakMaps是不可迭代的,要使用它们,您总是需要密钥。这是一个深思熟虑的决定(也在这里),这样垃圾收集就不会影响程序的语义——这正是您想要的。
ES8可能会提供真正的弱参考,请参阅此处和那里的草稿。