16

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

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

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

4

1 回答 1

15

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

真正的弱引用可能会随 ES8 一起提供,请参阅此处此处的草稿。

于 2015-04-19T21:39:05.863 回答