Javascript 如何在ES6中使弱集或弱映射可适配?

Javascript 如何在ES6中使弱集或弱映射可适配?,javascript,ecmascript-6,Javascript,Ecmascript 6,如何在ES6中使弱集或弱映射“iterable”,以便我可以用于in-loop: for(item in weakMap){console.log(item); } 不,WeakMap的内容在设计上是不可访问的,并且不具有易读性 弱映射的一个关键特性是无法枚举其密钥。 这对于防止攻击者观察内部行为是必要的 环境中共享弱映射对象的其他系统的。 集合中项目的数量或名称是否可以发现 从API中,即使值不是,WeakMap实例也可能 创建一个以前不可用的侧通道 如果要在中为…使用,则使用Object.

如何在ES6中使弱集或弱映射“iterable”,以便我可以用于in-loop:

for(item in weakMap){console.log(item); }

不,WeakMap的内容在设计上是不可访问的,并且不具有易读性

弱映射的一个关键特性是无法枚举其密钥。 这对于防止攻击者观察内部行为是必要的 环境中共享弱映射对象的其他系统的。 集合中项目的数量或名称是否可以发现 从API中,即使值不是,WeakMap实例也可能 创建一个以前不可用的侧通道


如果要在中为…使用
,则使用Object.weak map/set不可编辑。我们可以将键存储在一个可编辑中,并对其进行迭代以检索WeakMap中的值。其中一些可能未定义;一个明显的警告:钥匙不是垃圾收集的,这可以打包为IterableWeakMap。依我拙见,这个问题与已经回答的问题不同。我们不是在问“为什么”它们不可接受。我们正在征求关于如何构建一个对象的建议,该对象的值存储在WeakMap中,但我们仍然可以对其进行迭代。看起来JavaScript最终将在未来得到一个真正的WeakReference实现!通过将两者结合起来,这将实现一个可移植的WeakMap。(为WeakMap中的每个键创建一个WeakRef数组,然后通过迭代键数组来迭代WeakMap,并将每个键与
map.get(key)
value相结合)Firefox每晚都会增加对WeakRef的实验性支持。下面是一个示例实现,使用它创建一个可移植版本的WeakSet: