gpt4 book ai didi

javascript - 了解弱 map

转载 作者:可可西里 更新时间:2023-11-01 02:50:58 26 4
gpt4 key购买 nike

ECMAScript 6 引入了弱映射,在 Node.JS v0.11.3 中通过 --harmony 标志可用。请考虑以下事项。

let weakMap = WeakMap();
let key = [];
let rubbish = 'fish cans';

weakMap.set(key, rubbish);
rubbish = 'empty bottle';

// Prints "fish cans"
console.log(weakMap.get(key));

我的印象是,对于弱映射,从键到值的引用,所以如果对值的唯一引用是键,那么值就不能不再被访问。

那么为什么值 'fish cans' 仍然可以访问并且没有被垃圾收集?变量 rubbish 不再引用它,并且从 key'fish cans' 的引用,即从垃圾收集器的 Angular 来看是不存在的。我错过了什么?

最佳答案

弱点在于键,而不是值。来自当前草案:

WeakMap are intended to provide a mechanism for dynamically associating state with an object in a manner that does not “leak” memory resources if, in the absence of the WeakMap, the object otherwise became inaccessible and subject to resource reclamation by the implementation’s garbage collection mechanisms.

假设您有一个 DOM 元素并希望将一些数据与其相关联,并为此使用 WeakMap:weakMap.set(domElement, data);。当 DOM 元素被删除时,weak map 中的条目也会被删除。

另一方面,只要 DOM 元素存在,您就不会希望删除数据,只是因为在 weak map 之外没有其他对它的引用。

除此之外,'fish cans' 是原始类型,因此不受垃圾回收的约束。

关于javascript - 了解弱 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17545703/

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