Set 和 WeakSet的区别

129 阅读1分钟

一、Set

1. 它类似于数组,但是里面的成员值是唯一的。

2. Set中的值可以为任何类型的值。

3.Set中认为NAN是相同的,不会同时传入两个NAN,而 === 认为NAN是不同的。

4. NAN === NAN // false。

5. Set的操作方法有:Set.prototype.[add(), delete(), has(), clear()]。

6. Set的遍历方法有:Set.prototype.[keys(), values(), entries(), forEach()]。

二、WeakSet 与 Set区别

1. WeakSet的成员只能是对象,而不能为其他类型的值。

2. WeakSet的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用。
   也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,
   不考虑该对象还存在于 WeakSet 之中。
   
3. WeakSet的操作方法有:WeakSet.prototype.[add(), delete(), has()]。

4. WeakSet没有size属性,所以没办法遍历。因为它是弱引用,不确定什么时候就消失了。