- 弱引用,防止内存泄漏
- WeakMap只能用对象作为key,WeakSet只能用对象做value
- 没有forEach和size
// const obj = {}
// function fn() {
// const innerObj = { name: '张三' }
// obj.innerObj = innerObj // 强引用
// }
// fn()
// 垃圾清理机制,是一个标记清除的机制(引用计数),数据没有用时会被清除,但是当还被一些没有被清除的变量引用时,不会被清除。
// 如果没有 obj.innerObj = innerObj 这个引用关系,在fn执行完成之后,innerObj就会被垃圾回收机制清理掉,有
// WeakMap 弱引用,防止内存泄漏
// WeakMap 弱引用的只是键名,而不是键值。键值依然是正常引用
// get()、set()、has()、delete()
const wMap = new WeakMap()
function fn() {
const innerObj = { name: '张三' }
wMap.set(innerObj, 'innerObj')
}
fn()
// fn执行完成后,innerObj被清除,wMap也为空(垃圾处理机制不同,可手动清除)
// WeakSet 弱引用,防止内容泄漏,只能用对象作为value
// add()、delete()、has()
const wSet = new WeakSet()
function fn() {
const innerObj = { name: '张三' }
wSet.add(innerObj)
}
fn()
// fn执行完成后,innerObj被清除,wSet也为空(垃圾处理机制不同,可手动清除)