Set成員的值都是唯一的,沒有重複的值。(如果成員是引用類型,區分唯一性通過內存地址)
WeakSet與Set的區別:
- 成員必須爲對象;
const a = new WeakSet()
a.add(target) // target爲對象
- WeakSet是弱引用,垃圾回收機制不考慮 WeakSet 對該對象的引用;這邊講講垃圾回收的機制:標記清楚和引用計數。對對象的回收是通過引用計數,WeakSet的引用,計數不會增加,所以WeakSet 的成員是不適合引用的,因爲它會隨時消失。
Map和Set的區別:
- 數據存儲形式以[key, value],Set以[value, value]形式;
- 構造函數參數:任何具有 Iterator 接口、且每個成員都是一個雙元素的數組的數據結構都可以當作Map構造函數的參數,例如[[‘fool’, 1]]
Map和WeakMap的區別,與Set和WeakSet有點類似:
- WeakMap鍵名必須爲對象;
- WeakMap的鍵名也是弱引用,只要所引用的對象的其他引用都被清除。