js中WeakMap 和WeakSet的区别
文章类型:Javascript
发布者:hp
发布时间:2023-05-19
WeakMap 和 WeakSet 是 JavaScript 中的两种集合类型,设计目的是为了解决对象引用导致的内存泄漏问题,并且在对象不再被引用时能够自动进行垃圾回收
1:WeakMap
const wm = new WeakMap();
const obj1 = {};
const obj2 = {};
wm.set(obj1, 'value1');
wm.set(obj2, 'value2');
console.log(wm.get(obj1)); // 'value1'
console.log(wm.has(obj2)); // true
wm.delete(obj1);
console.log(wm.has(obj1)); // false
const ws = new WeakSet();
const obj1 = {};
const obj2 = {};
ws.add(obj1);
ws.add(obj2);
console.log(ws.has(obj1)); // true
console.log(ws.has(obj2)); // true
ws.delete(obj1);
console.log(ws.has(obj1)); // false
三:总结
1:键或值是弱引用的
2:目的是为了解决对象引用导致的内存泄漏问题