摘要:概述和使用上類似,在特性上和類似,和相比,有一下特點(diǎn)不可枚舉的只能是對(duì)象是弱引用,內(nèi)的如果沒(méi)有引用,將會(huì)被垃圾回收機(jī)制回收初始化添加刪除包含弱引用特性后輸出一下內(nèi)容,數(shù)據(jù)消失了
0x000 概述
WeakMap和Map使用上類似,在特性上和Set類似,和Map相比,有一下特點(diǎn)
不可枚舉
WeakMap的key只能是對(duì)象
WeakMap是弱引用,WeakMap內(nèi)的key如果沒(méi)有引用,將會(huì)被垃圾回收機(jī)制回收
0x001 初始化new WeakMap([[{},1]])0x002 添加
let weakmap=new WeakMap() weakmap.add({},"1") weakmap.add({num:1},()=>{})0x003 刪除
let obj={} let weakmap=new WeakMap() weakmap.add(obj,"1") weakmap.add({},"2") weakmap.delete(obj) //true weakmap.delete({}) //false0x004 包含
let obj={} let weakmap=new WeakMap() weakmap.add(obj,"1") weakmap.has(obj)//true weakmap.has({})//false0x005 弱引用特性
let weakmap=new WeakMap([[{},1]]) setTimeout(()=>{console.log(weakmap)},3000) // 3s后輸出一下內(nèi)容,數(shù)據(jù)消失了 WeakMap?{}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99247.html
Set有對(duì)應(yīng)的WeakSet, Map也有WeakMap。這一篇,我們就來(lái)學(xué)習(xí)一下WeakMap有寫什么特性。先來(lái)看一下WeakMap的基本特性: 1: WeakMap是一種存儲(chǔ)多個(gè)鍵值對(duì)的無(wú)序列表 2: WeakMap的鍵必須是非null的對(duì)象類型 3: WeakMap的鍵對(duì)應(yīng)的值,可以是任意類型 接下來(lái)看一下WeakMap的接口方法:一:WeakMap的新建與初始化與Map相同的,WeakM...
摘要:一個(gè)對(duì)象若只被弱引用所引用,則被認(rèn)為是不可訪問(wèn)或弱可訪問(wèn)的,并因此可能在任何時(shí)刻被回收。也就是說(shuō),一旦不再需要,里面的鍵名對(duì)象和所對(duì)應(yīng)的鍵值對(duì)會(huì)自動(dòng)消失,不用手動(dòng)刪除引用。如果有錯(cuò)誤或者不嚴(yán)謹(jǐn)?shù)牡胤剑?qǐng)務(wù)必給予指正,十分感謝。 前言 我們先從 WeakMap 的特性說(shuō)起,然后聊聊 WeakMap 的一些應(yīng)用場(chǎng)景。 特性 1. WeakMap 只接受對(duì)象作為鍵名 const map = ...
摘要:棧是另外一種數(shù)據(jù)結(jié)構(gòu),類似于數(shù)組,但是在添加或刪除數(shù)據(jù)時(shí)更加靈活。棧數(shù)據(jù)結(jié)構(gòu)棧是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。這種情況下,可以直接通過(guò)修改來(lái)修改棧中的數(shù)據(jù),這是無(wú)法避免的。 前言 數(shù)組是 JS 中最常用的數(shù)據(jù)結(jié)構(gòu),它可以在任意位置添加或刪除數(shù)據(jù)。棧是另外一種數(shù)據(jù)結(jié)構(gòu),類似于數(shù)組,但是在添加或刪除數(shù)據(jù)時(shí)更加靈活。 棧數(shù)據(jù)結(jié)構(gòu) 棧是一種 后進(jìn)先出(LIFO) 的數(shù)據(jù)結(jié)構(gòu)。新添加或待刪除的元素都保...
摘要:中對(duì)的要求主要是對(duì)非對(duì)象僅保留弱引用,且取值是復(fù)雜度,這導(dǎo)致了它的兩個(gè)特性不能求大小,更不能枚舉。按說(shuō)這種關(guān)乎內(nèi)存管理的對(duì)象是沒(méi)法的。但是對(duì)有一個(gè)很奇妙的。在中的每一個(gè)中設(shè)置一個(gè)屬性屬性名是的唯一。值為該在中對(duì)應(yīng)的。同時(shí)取值也是復(fù)雜度的。 ES6 中對(duì) WeakMap 的要求主要是對(duì) key(非 null 對(duì)象) 僅保留弱引用,且取值是 O(1) 復(fù)雜度,這導(dǎo)致了它的兩個(gè)特性: 不...
摘要:只有一個(gè)屬性,那就是栗子可展開收縮的表格源碼展開收起張三我很開心李四我也很開心王五我比張三和李四更開心效果 0x001 引出問(wèn)題 讓我們先來(lái)看一個(gè)栗子: class App extends React.Component { render() { return ( ) } } Reac...
閱讀 930·2021-11-16 11:45
閱讀 2135·2021-10-09 09:44
閱讀 1353·2019-08-30 14:03
閱讀 1138·2019-08-26 18:28
閱讀 3338·2019-08-26 13:50
閱讀 1728·2019-08-23 18:38
閱讀 3459·2019-08-23 18:22
閱讀 3606·2019-08-23 15:27