1. 程式人生 > >ES6 Set,WeakSet,Map,WeakMap

ES6 Set,WeakSet,Map,WeakMap

efi 區別 重復數據 pan 外部 回收機制 不能 ber kset

1. Set

Set是一個集合,裏面的值都是唯一的,沒有重復的。
Set中可以是任何數據類型,並且添加數據時會進行嚴格比較,重復數據無法加入。

2. WeakSet

弱引用Set。只能存儲對象,不能存儲其他類型。且只保持對其中對象的弱引用,若外部無對此對象的引用,或者對象被刪除,則
WeakSet中將不再有此對象。

因為成員都是弱引用,隨時可能消失,遍歷不能保證成員的存在。所以 WeakSet 不能遍歷

3. Map

Map是一個鍵值對。

Map與Object的區別是:

1. Object的key只能是String和Symbol類型,而Map的key可以是任何基本類型(String, Number, Boolean, undefined, NaN....)或對象類型(Map, Set, Object, Function , Symbol , null....)
2. Map有size屬性,可以方便的獲取Map的長度,但是Object無法直接獲取長度

4. WeakMap

弱引用Map。WeakMap有如下特點:

1. WeakMap的key只能是對象,不能是基本類型,且對象不計入垃圾回收機制
2. WeakMap沒有keys、values、entries、size方法
3. WeakMap沒有遍歷操作,無法遍歷

WeakMap和WeakSet的作用,可以用來存儲DOM節點,保持與DOM節點相關的數據,當DOM節點被刪除後,集合中的數據自動刪除,
這樣就不必擔心移除DOM節點時的內存泄漏了。

ES6 Set,WeakSet,Map,WeakMap