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));
我的印象是,对于weak map,从键到值的引用是弱的,所以如果对值的唯一引用是键,那么就不能再访问值了。
那么为什么该值'fish cans'
仍然可以访问而不是垃圾收集呢?该变量rubbish
不再引用它,并且来自key
to的引用'fish cans'
是弱的,即从垃圾收集器的角度来看不存在。我错过了什么?