ES6新增數(shù)據(jù)結(jié)構(gòu)WeakSet的用法詳解
WeakSet和Set類(lèi)似,同樣是元素不重復(fù)的集合,它們的區(qū)別是WeakSet內(nèi)的元素必須是對(duì)象,不能是其它類(lèi)型。
特性:
1.元素必須是對(duì)象。
添加一個(gè)number類(lèi)型的元素。
const ws = new WeakSet() ws.add(1)
結(jié)果是報(bào)類(lèi)型錯(cuò)誤。
TypeError: Invalid value used in weak set
添加一個(gè)對(duì)象。
const ws = new WeakSet()
var a = {p1:'1', p2:'2'}
ws.add(a)
console.log(ws.has(a));
添加OK,結(jié)果顯示:
true
可以通過(guò)WeakSet的has方法判斷一個(gè)元素是否已在集合中。
如果不需要存儲(chǔ)元素時(shí),可以使用delete方法刪除元素。
2.弱引用,不被計(jì)入垃圾回收
添加進(jìn)WeakSet的元素對(duì)象,WeakSet不會(huì)對(duì)元素對(duì)像的引用計(jì)數(shù)加1,對(duì)于被添加進(jìn)WeakSet的元素對(duì)象,只要該元素對(duì)象沒(méi)有被除WeakSet以外的其他對(duì)象引用,就會(huì)被垃圾回收釋放,在WeakSet中的該元素對(duì)象自動(dòng)被釋放,不會(huì)出現(xiàn)內(nèi)存泄漏。
因?yàn)檫@一特性,其性能要比map要高,對(duì)于存儲(chǔ)無(wú)順序要求的,不重復(fù)的,臨時(shí)存儲(chǔ)的場(chǎng)景,可以使用它。
const ws = new WeakSet()
var a = {p1:'1', p2:'2'}
ws.add(a)
a = null
console.log(ws.has(a));
先將對(duì)象添加到WeakSet中,然后將對(duì)象設(shè)成null,然后再下面的has方法判定時(shí),結(jié)果顯示,表示W(wǎng)eakSet中已經(jīng)不存在該對(duì)象。
false
3.不能遍歷
因?yàn)槠鋵?duì)內(nèi)部的元素對(duì)象是弱引用,隨時(shí)會(huì)被垃圾回收釋放掉,所以其不支持size和forEach等遍歷方法。
總結(jié)
以上所述是小編給大家介紹的ES6新增數(shù)據(jù)結(jié)構(gòu)WeakSet的用法詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
js實(shí)現(xiàn)數(shù)字跳動(dòng)到指定數(shù)字
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)數(shù)字跳動(dòng)到指定數(shù)字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
JavaScript一元正號(hào)運(yùn)算符示例代碼
這篇文章主要給大家介紹了關(guān)于JavaScript一元正號(hào)運(yùn)算符的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
小程序云開(kāi)發(fā)實(shí)戰(zhàn)小結(jié)
這篇文章主要介紹了小程序云開(kāi)發(fā)實(shí)戰(zhàn)小結(jié),本文詳細(xì)的介紹了云開(kāi)發(fā)以及環(huán)境的搭建和項(xiàng)目實(shí)踐,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-10-10
js項(xiàng)目中雙向數(shù)據(jù)綁定的簡(jiǎn)單實(shí)現(xiàn)方法
雙向數(shù)據(jù)綁定指的就是,綁定對(duì)象屬性的改變到用戶(hù)界面的變化的能力,反之亦然,下面這篇文章主要給大家介紹了關(guān)于js項(xiàng)目中雙向數(shù)據(jù)綁定的簡(jiǎn)單實(shí)現(xiàn)方法,需要的朋友可以參考下2021-08-08
Javascript 中的 && 和 || 使用小結(jié)
Javascript 中的 && 和 || ,有時(shí)候用作條件判斷,非常的簡(jiǎn)潔,不熟悉的朋友可能不太了解,這里最后有個(gè)朋友補(bǔ)充,非常的好。2010-04-04
響應(yīng)式表格之固定表頭的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇響應(yīng)式表格之固定表頭的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08

