美文网首页
ES6 map weakmap set weakset 区别

ES6 map weakmap set weakset 区别

作者: 玲儿珑 | 来源:发表于2021-03-04 17:54 被阅读0次

    前端数据结构 https://www.cnblogs.com/baoshuyan66/p/10307595.html

    https://es6.ruanyifeng.com/#docs/set-map

    我们常用的对象Object,是由key:value集合组成的,但key只能是字符串,有很大的使用限制。当我们需要其他类型的数据做key值时,就需要用到数据结构Map,它支持把各种类型的值,当做键。

    var map = new Map();

    var nie = {name:'Annie'};

    var kth = {name:'Keith'};

    map.set(nie,kth);

    map.set(kth,nie);

    console.log(map.get(nie)); //{name:'Keith'}

    console.log(map.get(kth)); //{name:'Annie'}

    还有其他方法:

    map.size //2,表示map中的成员数量

    map.has(nie) //true,布尔值,判断成员是否存在

    map.delete(nie) //true,布尔值,删除成员,删除成功返回true,失败返回false

    map.clear() //清除所有成员,没有返回值

    区别:

    • WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名。

    • WeakMap的键名所指向的对象,不计入垃圾回收机制。

    • WeakMap只接受对象作为key,如果设置其他类型的数据作为key,会报错。

    • WeakMap的key所引用的对象都是弱引用,只要对象的其他引用被删除,垃圾回收机制就会释放该对象占用的内存,从而避免内存泄漏。

    • 由于WeakMap的成员随时可能被垃圾回收机制回收,成员的数量不稳定,所以没有size属性。

    • 没有clear()方法

    • 不能遍历

    相关文章

      网友评论

          本文标题:ES6 map weakmap set weakset 区别

          本文链接:https://www.haomeiwen.com/subject/xubkqltx.html