es6之Set和Map


一. 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 不能遍歷,是因為成員都是弱引用,隨時可能消失,遍歷機制無法保證成員的存在,很可能剛剛遍歷結束,成員就取不到了。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 節點作為鍵名
  • WeakMap的鍵名所引用的對象都是弱引用,一旦不需要,里面的鍵名對象和所對應的鍵值對會自動消失,不用手動刪除引用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM