Set、Map、WeakSet 和 WeakMap 的区别

1.Set

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

Set本身是一个构造函数,用来生成 Set 数据结构。

成员唯一、无序且不重复;

[value, value],键值与键名是一致的(或者说只有键值,没有键名);

可以遍历,方法有:add、delete、has。

2.WeakSet

WeakSet 结构与 Set 类似,也是不重复的值的集合。但是,它与 Set 有两个区别。

成员都是对象;

成员都是弱引用,可以被垃圾回收机制回收,可以用来保存 DOM 节点,不容易造成内存泄漏;

不能遍历,方法有 add、delete、has。

3.Map

JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。

可以遍历,方法很多,可以跟各种数据格式转换。

4.WeakMap

WeakMap结构与Map结构类似,也是用于生成键值对的集合。

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

键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收,此时键名是无效的;

不能遍历,方法有 get、set、has、delete。

文章来源:尚硅谷前端培训

你可能感兴趣的:(WEB前端,html,html5)