ES6 Set,WeakSet,Map,WeakMap
阿新 • • 發佈:2018-09-17
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