和Set的WeakSet類似Map也有WeakMap結構,WeakMap結構Map結構大致相同,也是用于生成鍵值對的集合,方法也存在get和set,形參中可以接受數(shù)組作為構造函數(shù)。
由示例中可以發(fā)現(xiàn)一個問題,WeakMap中的鍵值都是用的Object作為鍵,因為WeakMap直接收對象作為鍵名,下圖中可見,不論用數(shù)字、字符串都不能作為鍵,這也是與Map的區(qū)別之一
區(qū)別二就是WeakMap的鍵名所指的對象不會被垃圾回收機制處理。其意就是當外部dom或者對象消失時,WeakMap的鍵依然可以正常使用。
語法卻別一是沒有遍歷器,所以循環(huán)操作都沒辦法使用,例如keys、values等,也沒有size屬性,因為垃圾處理機制的問題所以鍵名也無法清空,取消了clear方法,所以WeakMap只有四個方法:get、set、has、delete
WeakMap經(jīng)常用在dom節(jié)點中,假設我們將點擊后更新狀態(tài)放入WeakMap中,對應的餓鍵名就是當前dom,一旦這個dom節(jié)點被刪除,這個狀態(tài)就會自動消失,不存在內存泄漏問題,此外運用于監(jiān)聽事件也比較方便,當dom消失監(jiān)聽事件也隨之消失
上一篇: 走進es6|新的鍵值對結構|Map結構