ES6地图与We​​akMaps。在给定示例中,速度,性能或执行方面是否有任何差异?

时间:2018-01-04 14:02:44

标签: javascript ecmascript-6

请参阅以下示例,如果我使用Map代替WeakMap,会有什么不同吗?

let map = new WeakMap();
let el  = document.getElementById('hplogo');

map.set(el, 'reference');

console.log(map.get(el)); // 'reference'

// Remove the reference
el.parentNode.removeChild(el);
el = null;

console.log(map.get(el)); // undefined
let map = new Map();
let el  = document.getElementById('hplogo');

map.set(el, 'reference');

console.log(map.get(el)); // 'reference'

// Remove the reference
el.parentNode.removeChild(el);
el = null;

console.log(map.get(el)); // undefined

此外,使用Map时,以下代码输出似乎令人困惑。

let map = new Map();
let el  = document.getElementById('hplogo');

map.set(el, 'reference');

console.log(map); // Map object
console.log(map.get(el)); // 'reference'

// Remove the reference
el.parentNode.removeChild(el);
el = null;

console.log(map); // Map object
console.log(map.get(el)); // undefined

即使删除了引用,map对象看起来也是如此。

Map(1) {img#hplogo => "reference"}

但是map.get(el)会注销undefined

0 个答案:

没有答案