ES6 WeakMap

        {
            let wm = new WeakMap();
            let key = { foo: 1 }
            wm.set(key, 2)
            console.log(wm.get(key))

            let k1 = [1, 2]
            let k2 = [3, 4]
            let wm2 = new WeakMap([[k1, "foo"], [k2, "bar"]])
            console.log(wm2.get(k2))

            //区别
            //WeakMap只接受对象作为键名
            // let map = new WeakMap()
            // map.set(1, 2)
            // map.set(Symbol(), 2)
            // map.set(null, 2)

            //WeakMap的键名所指向的对象,不计入垃圾回收机制
            let ele1 = document.getElementById("foo")
            let ele2 = document.getElementById("bar")
            // let arr = [
            //     [e1, "foo元素"],
            //     [e2, "bar元素"]
            // ]
            // arr[0]=null
            // arr[1]=null

            //WeakMap键名所指向的对象都是弱引用,垃圾回收机制不会将该引用考虑在内,
            //只要所引用的对象的其他引用都被清除,垃圾回收机制就会释放该对象所占用的内存
            let elewm = new WeakMap()
            //elewm.set(ele1, "ele1 data")
            //elewm.set(ele2, "ele2 data")

            //WeakMap没有遍历操作( keys() values() entries()),也没有size属性
            //WeakMap只有四个方法:get()、set()、has()、delete()

        }

posted @ 2021-02-25 18:15  abcdefgab  阅读(67)  评论(0)    收藏  举报