使用 Wea​​kMaps 在 Javascript 中创建常规弱引用

Creating a regular weak-reference in Javascript using WeakMaps

我正在尝试使用 Wea​​kMaps 做 显而易见的 事情:我想创建一个弱引用。特别是,我想要一个事件监听器列表,而该列表不会影响监听器的生活。

所以我很高兴找到 WeakMaps,直到我看到它们只是为了满足一个(相当罕见的)用例而构建的,扩展了原本密封的对象。我想不出我什么时候想这样做,但我一直需要听众名单。

是否有可能以我没有想到的巧妙方式使用 Wea​​kMaps?

不,不可能使用 Wea​​kMaps 创建弱引用。 WeakMaps 不可迭代,要使用它们你总是需要密钥。这是一个深思熟虑的决定(也是 here),因此垃圾收集不会影响程序的语义 - 这正是您想要的。

真正的弱引用可能随 ES8 一起提供,请参阅 here and there 草稿。