gpt4 book ai didi

javascript - EcmaScript5 中的 WeakMap 实现?

转载 作者:行者123 更新时间:2023-12-03 02:45:04 26 4
gpt4 key购买 nike

我遇到了JavaScript library实现跨浏览器WeakMapES5中。 (WeakMap 预计用于 ES6。)

如果没有 JavaScript 语言本身的支持,这怎么可能工作?

编辑:需要明确的是,我指的是 map ,而不是常规 map 。我使用 Chrome 的分析器测试了这个项目,并且 key 不是由强引用保存的。它们无需从 WeakMap 中删除即可被 GC 处理。

最佳答案

我花了一段时间才理解代码,但后来我突然意识到:键本身用于存储对值的引用。

例如,set 中的几层确实如此

defProp(obj, globalID, { value: store });

其中 defProp 已定义为 Object.definePropertyobj 是键,globalID 是guid 和 store 是包含该值的存储对象。

然后在 get 中查找值

obj[全局ID];

这非常聪明。 WeakMap 实际上并不包含对任何内容(弱或其他)的引用——它只是设置了一个 secret 存储值的策略。使用Object.defineProperty意味着您不会意外地发现值(value)存储——您必须知道魔法指南才能查找它。

由于键直接引用值(而 WeakMap 不引用它),因此当对键的所有引用都消失时,它会像平常一样被 GC。

关于javascript - EcmaScript5 中的 WeakMap 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16366000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com