weakMap為什么是弱引用原理
前言
聊一下WeakMap弱引用,看了很多文章發(fā)現(xiàn)說的不對,給出的demo經(jīng)過嘗試也是錯誤的,哎,難搞也要搞
弱引用 vs 強引用
對象被強引用則不會被垃圾回收機制回收,這沒啥說的。那到底啥事弱引用呢?
垃圾回收機制最常用的方法就是引用計數(shù),只要有引用堆內(nèi)存的地方,引用計數(shù)就要加1。如果一個值的引用次數(shù)是0,就表示這個值不再用到了,因此可以將這塊內(nèi)存釋放
弱引用則可以理解為引用計數(shù)不會+1,看一下實際表現(xiàn)
Map vs WeakMap
var m = new WeakMap()
function Foo() {
this.arr = new Array(5 * 1024 * 1024)
}
var f = new Foo()
m.set(f, 'data')
f = null
網(wǎng)上有人說m.get('f')得到的是undefined所以是弱引用,但其實你使用Map得到的也是undefined,這種說法還非常的多,不能說他說的不對吧,簡直就是胡說。
回歸正傳,看一下為啥說WeakMap是弱引用。打開F12,選擇內(nèi)存(memory),點擊小圓點獲取快照,然后搜索Foo,發(fā)現(xiàn)并沒有表示其已經(jīng)被回收

而后將WeakMap改為Map重新獲取快照,發(fā)現(xiàn)Foo沒有被回收

這個方式可以很直觀的表明WeakMap的弱引用
以上就是weakMap為什么是弱引用原理的詳細內(nèi)容,更多關(guān)于weakMap為什么是弱引用的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
jsonp跨域獲取數(shù)據(jù)的基礎(chǔ)教程
這篇文章主要給大家介紹了關(guān)于jsonp跨域獲取數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
Javascript實現(xiàn)漢字和拼音互轉(zhuǎn)的終極方案
網(wǎng)上關(guān)于JS實現(xiàn)漢字和拼音互轉(zhuǎn)的文章很多,但是比較雜亂,有的不支持多音字、不支持聲調(diào)或者字典文件太大,無法根據(jù)實際需要滿足需求。這篇文章給大家修正整理網(wǎng)上的幾種常見方法,文章結(jié)尾還附簡單的JS拼音輸入法,本文對大家具有一定的參考借鑒價值,下面一起看看吧。2016-10-10

