ES6 Set Map WeakSet WeakMap區別

Set成員的值都是唯一的,沒有重複的值。(如果成員是引用類型,區分唯一性通過內存地址)
WeakSet與Set的區別:

  1. 成員必須爲對象;
const a = new WeakSet()
a.add(target) // target爲對象
  1. WeakSet是弱引用,垃圾回收機制不考慮 WeakSet 對該對象的引用;這邊講講垃圾回收的機制:標記清楚和引用計數。對對象的回收是通過引用計數,WeakSet的引用,計數不會增加,所以WeakSet 的成員是不適合引用的,因爲它會隨時消失。

Map和Set的區別:

  1. 數據存儲形式以[key, value],Set以[value, value]形式;
    在這裏插入圖片描述
    在這裏插入圖片描述
  2. 構造函數參數:任何具有 Iterator 接口、且每個成員都是一個雙元素的數組的數據結構都可以當作Map構造函數的參數,例如[[‘fool’, 1]]

Map和WeakMap的區別,與Set和WeakSet有點類似:

  1. WeakMap鍵名必須爲對象;
  2. WeakMap的鍵名也是弱引用,只要所引用的對象的其他引用都被清除。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章