WeakSet 不能遍歷笋颤,是因?yàn)槌蓡T都是弱引用,隨時(shí)可能消失内地,遍歷機(jī)制無(wú)法保證成員的存在伴澄,很可能剛剛遍歷結(jié)束,成員就取不到了阱缓。WeakSet 的一個(gè)用處非凌,是儲(chǔ)存 DOM 節(jié)點(diǎn),而不用擔(dān)心這些節(jié)點(diǎn)從文檔移除時(shí)荆针,會(huì)引發(fā)內(nèi)存泄漏敞嗡。
Map 結(jié)構(gòu)的默認(rèn)遍歷器接口(Symbol.iterator屬性),就是entries方法航背。
map[Symbol.iterator] === map.entries
// true
WeakMap只接受對(duì)象作為鍵名(null除外)喉悴,不接受其他類型的值作為鍵名。
WeakMap的鍵名所指向的對(duì)象玖媚,不計(jì)入垃圾回收機(jī)制粥惧。