es6 weakMap 在实际项目开发中怎么用?

es6 新增数据类型weakMap,在实际项目开发中怎么用? 请老师们解答一下具体适用场景.

阅读 1.9k
3 个回答

plyr.js源码中有段代码,用WeakMap来存储视频字幕的元信息,并且和轨道相绑定。

image.png

企业微信截图_16636390041947.png

我猜测WeakMap使用的原因是因为视频流的轨道信息本身是会在某个时刻被清除,然后垃圾回收掉。所以字幕的元信息也应该随着轨道的清除而清除。

所以从第三方库的实际应用场景来说,WeakMap用来存储会随时清除,并且保证垃圾回收能够覆盖的一些对象。

一般来说会很少用到 weakMap ,大部分情况都用到的是 map
不过确定自己需要的是弱引用,也就是说想要 set 进来的数据,在其他地方释放的时候可以被GC回收,这是时候可以选择 weakMap

具体可以看阮一峰老师的 Set 和 Map 数据结构 - ECMAScript 6入门

怎么用看文档。适用场景可以参考阮一峰大佬的文章,里面有提到,实际开发中基本不太会用到,尤其在有了Vue/React/Angular,反正我没有在实际项目中使用过。

一个典型应用场景是,在网页的 DOM 元素上添加数据,就可以使用WeakMap结构。当该 DOM 元素被清除,其所对应的WeakMap记录就会自动被移除。

https://es6.ruanyifeng.com/#d...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题