大前端JS篇之搞懂 WeakSet

2022-09-21 00:12:10 字數 760 閱讀 6603

和set一樣,weakset也是es6新增的一種資料結構,那麼它和set有什麼區別呢?

weakset對比set主要是兩個區別:

weakset只能放置物件,不能是其他任何型別

weakset裡面的儲存的都是對物件的弱引用

這裡我們理解下什麼叫對物件的弱引用,也就是說js的垃圾**機制不會考慮weakset裡面的物件,如果裡面的物件在外面沒有被引用,垃圾**機制會**該物件,不會考慮這些物件是否存在於weakset中。這就使得我們可以利用weakset來存放一些臨時物件,而不用考慮後面這些物件如果不用了忘記清空產生記憶體洩漏的問題

weakset有三個方法:

weakset.prototype.add(value):新增物件

weakset.prototype.delete(value): 刪除物件

weakset.prototype.has(value):判斷某個物件是否存在

const wset = new weakset()

const a = {}

const b= {}

wset.add(a)

wset.add(b)

wset.delete(a)

wset.has(b)

注意的是weakset沒有size屬性和foreach方法,沒法進行遍歷,因為儲存的都是物件的弱引用,可能何時這些物件的引用就會不存在了。

weakset 的乙個使用場景就是用來儲存dom節點,不用擔心dom節點從文件中移除產生記憶體洩漏的問題

大前端JS篇之搞懂 Set

我認為前端生態很大,猶如一片汪洋大海,很難短時間內窺其全貌,在這裡我們不談其他,只聊聊 setset 是 es6 新提出的乙個物件,也是一種資料結構,為什麼es6要提出這樣乙個新物件呢,無非就是豐富js的物件型別,在遇到具體的業務場景需要乙個比較適合的恰當的資料結構來儲存和運算元據,接下來就讓我們更...

Web前端學習JS篇之「DOM事件」

事件就是指為dom指定的動作,包括三個部分。事件源 比如按鈕,為了獲取事件源。事件型別 比如onclick,為了註冊事件 繫結事件 事件處理程式 為了新增事件執行的核心程式。1.傳統方式 onclick 這種方式無法繫結多個,後邊註冊的會覆蓋前邊註冊的。2.監聽方式 addeventlistener...

前端基礎題 js篇

1.資料型別有哪些?基本資料型別 單型別 number boolean string undefined null symbol es6新增型別 永不相等 引用資料型別 object。裡面包含function array date。2.js 中 typeof 輸出分別是什麼?返回object型別 t...