WeakMap WeakSet

WeakMap WeakSet

特性:

  • WeakMap對key的引用和WeakSet的成員 是弱引用
  • WeakMap對key的引用和WeakSet的成員 只能是對象
  • 無法遍歷

優點:

  • 不易造成內存泄漏

弱引用

引用了對象,但是不影響它的垃圾回收

不會因爲該(弱)引用而改變原本的垃圾回收機制,在(弱)引用前應該進垃圾場的,(弱)引用後還是得進垃圾場,不受到(弱)引用的任何影響。
var obj = {};
var wm = new WeakMap();
// 弱引用
wm.set(obj, 1);
console.log(wm.get(obj));    // 1

// obj爲null,將會給垃圾回收機制回收。
obj = null;
console.log(wm.get(obj));    // undefined

Set Map WeakSet WeakMap區別

Set

  • 成員唯一、無序且不重複
  • [value, value],鍵值與鍵名是一致的(或者說只有鍵值,沒有鍵名)
  • 可以遍歷,方法有:add、delete、has

WeakSet

  • 成員都是對象
  • 成員都是弱引用,可以被垃圾回收機制回收,可以用來保存DOM節點,不容易造成內存泄漏
  • 不能遍歷,方法有add、delete、has

Map

  • 本質上是鍵值對的集合,類似集合
  • 可以遍歷,方法很多可以跟各種數據格式轉換

WeakMap

  • 只接受對象作爲鍵名(null除外),不接受其他類型的值作爲鍵名
  • 鍵名是弱引用,鍵值可以是任意的,鍵名所指向的對象可以被垃圾回收,此時鍵名是無效的
  • 不能遍歷,方法有get、set、has、delete

具體用法與更詳細解釋

ES2015 WeakMap的學習和使用 - 知乎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章