一. Set 類似數組,成員值唯一,var s = new Set() s加入值用add,加入時不會發生類型轉換(判斷兩值是否相等用的 ,但Set會認為NaN等於自己) Set.prototype.constructor Set , Set.prototype.size返回Set實例的成員總數 de ...
一. Set
- 類似數組,成員值唯一,var s = new Set()
- s加入值用add,加入時不會發生類型轉換(判斷兩值是否相等用的 ===,但Set會認為NaN等於自己)
- Set.prototype.constructor === Set , Set.prototype.size返回Set實例的成員總數
- delete刪除某個值,has返回布爾值,clear清空實例
- keys返回鍵名的遍歷器,values返回鍵值的遍歷器,entries返回鍵值對的遍歷器,
- Set.prototype[Symbol.iterator] === Set.prototype.values,所以可以直接用for...of遍歷set
- 擴展運算符和Set結合,可以去重,返回數組類型
二. WeekSet
- 成員只能是對象,方法有add、delete 、has
- WeakSet 不能遍歷,是因為成員都是弱引用,隨時可能消失,遍歷機制無法保證成員的存在,很可能剛剛遍歷結束,成員就取不到了。WeakSet 的一個用處,是儲存 DOM 節點,而不用擔心這些節點從文檔移除時,會引發記憶體泄漏。
三. Map
- 類似於對象,鍵值對的集合,鍵不限類型,即“值—值”的對應
- 任何具有Iterator的數據結構都可以當做構造函數的參數
- 對同一個鍵賦值,後面的會覆蓋掉前面的,Map 的鍵實際上是跟記憶體地址綁定的,只要記憶體地址不一樣,就視為兩個鍵
- size返回成員總數,set(key, value),get(key),has(key),delete(key),clear()
- 遍歷方法:keys(),values(),entries(),forEach()
- Map.prototype[Symbol.iterator] === Map.prototype.entries
- Map 結構轉為數組結構,比較快速的方法是使用擴展運算符
四. WeakMap
- 只接受對象作為鍵名,生成鍵值對的集合
- 沒有遍歷操作,只有get set has delete
- WeakMap 應用的典型場合就是 DOM 節點作為鍵名