带键的集合 您所在的位置:网站首页 js里面数组支出值 带键的集合

带键的集合

#带键的集合| 来源: 网络整理| 查看: 265

WeakMap 是键/值对的集合,其键必须是对象或非注册符号,其值为任意 JavaScript 类型,并且不会对其键创建强引用。也就是说,一个对象作为键出现在 WeakMap 中并不会阻止该对象被垃圾回收。一旦作为键的对象被收集,其在任何 WeakMap 中的相应值也会被垃圾收集,只要它们没有在其他地方被强引用。唯一可用作 WeakMap 键的原始类型类型是 symbol,更具体地说,是非注册 symbol,因为非注册 symbol 保证是唯一的,并且不能被重新创建。

WeakMap API 与 Map API 基本相同。不过,WeakMap 不允许观察其键的有效性,这也是它不允许枚举的原因。因此,没有任何方法可以获取 WeakMap 中的键的列表。如果有的话,该列表将取决于垃圾回收的状态,从而引入非确定性。

可以在 WeakMap 参考页的“为什么使用 WeakMap”小节查看更多信息和示例。

WeakMap 对象的一个用例是存储一个对象的私有数据或隐藏实现细节。Nick Fitzgerald 的博文“使用 ECMAScript 6 WeakMap 隐藏实现细节”提供了一个例子。对象内部的私有数据和方法被存储在 WeakMap 类型的 privates 变量中。所有暴露出的原型和实例都是公开的,而其他内容都是外界不可访问的,因为模块并未导出 privates 对象。

jsconst privates = new WeakMap(); function Public() { const me = { // 这里是私有数据 }; privates.set(this, me); } Public.prototype.method = function () { const me = privates.get(this); // 处理 `me` 中的私有数据 // … }; module.exports = Public;


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有