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節點時的記憶體洩漏了。