日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JavaScript WeakMap使用詳解

瀏覽:172日期:2023-10-04 13:49:03

WeakMap 對(duì)象是一組鍵/值對(duì)的集合,其中的鍵是弱引用的。其鍵必須是對(duì)象,而值可以是任意的。

語(yǔ)法

new WeakMap([iterable])參數(shù)

iterableIterable 是一個(gè)數(shù)組(二元數(shù)組)或者其他可迭代的且其元素是鍵值對(duì)的對(duì)象。每個(gè)鍵值對(duì)會(huì)被加到新的 WeakMap 里。null 會(huì)被當(dāng)做 undefined。

描述

WeakMap 的 key 只能是 Object 類(lèi)型。 原始數(shù)據(jù)類(lèi)型 是不能作為 key 的(比如 Symbol)。

Why WeakMap?

在 JavaScript 里,map API 可以通過(guò)使其四個(gè) API 方法共用兩個(gè)數(shù)組(一個(gè)存放鍵,一個(gè)存放值)來(lái)實(shí)現(xiàn)。給這種 map 設(shè)置值時(shí)會(huì)同時(shí)將鍵和值添加到這兩個(gè)數(shù)組的末尾。從而使得鍵和值的索引在兩個(gè)數(shù)組中相對(duì)應(yīng)。當(dāng)從該 map 取值的時(shí)候,需要遍歷所有的鍵,然后使用索引從存儲(chǔ)值的數(shù)組中檢索出相應(yīng)的值。

但這樣的實(shí)現(xiàn)會(huì)有兩個(gè)很大的缺點(diǎn),首先賦值和搜索操作都是 O(n) 的時(shí)間復(fù)雜度( n 是鍵值對(duì)的個(gè)數(shù)),因?yàn)檫@兩個(gè)操作都需要遍歷全部整個(gè)數(shù)組來(lái)進(jìn)行匹配。另外一個(gè)缺點(diǎn)是可能會(huì)導(dǎo)致內(nèi)存泄漏,因?yàn)閿?shù)組會(huì)一直引用著每個(gè)鍵和值。這種引用使得垃圾回收算法不能回收處理他們,即使沒(méi)有其他任何引用存在了。

相比之下,原生的 WeakMap 持有的是每個(gè)鍵對(duì)象的“弱引用”,這意味著在沒(méi)有其他引用存在時(shí)垃圾回收能正確進(jìn)行。原生 WeakMap 的結(jié)構(gòu)是特殊且有效的,其用于映射的 key 只有在其沒(méi)有被回收時(shí)才是有效的。

正由于這樣的弱引用,WeakMap 的 key 是不可枚舉的 (沒(méi)有方法能給出所有的 key)。如果key 是可枚舉的話(huà),其列表將會(huì)受垃圾回收機(jī)制的影響,從而得到不確定的結(jié)果。因此,如果你想要這種類(lèi)型對(duì)象的 key 值的列表,你應(yīng)該使用 Map。

基本上,如果你要往對(duì)象上添加數(shù)據(jù),又不想干擾垃圾回收機(jī)制,就可以使用 WeakMap。

屬性 WeakMap.length

length 屬性的值為 0。

WeakMap.prototype

WeakMap 構(gòu)造器的原型。 允許添加屬性到所有的 WeakMap 對(duì)象。

WeakMap 實(shí)例

所有 WeakMap 實(shí)例繼承自 WeakMap.prototype.

屬性

WeakMap.prototype.constructor返回創(chuàng)建WeakMap實(shí)例的原型函數(shù)。 WeakMap函數(shù)是默認(rèn)的。

方法 WeakMap.prototype.delete(key)

移除key的關(guān)聯(lián)對(duì)象。執(zhí)行后 WeakMap.prototype.has(key)返回false。

WeakMap.prototype.get(key)

返回key關(guān)聯(lián)對(duì)象, 或者 undefined(沒(méi)有key關(guān)聯(lián)對(duì)象時(shí))。

WeakMap.prototype.has(key)

根據(jù)是否有key關(guān)聯(lián)對(duì)象返回一個(gè)Boolean值。

WeakMap.prototype.set(key, value)

在WeakMap中設(shè)置一組key關(guān)聯(lián)對(duì)象,返回這個(gè) WeakMap對(duì)象。

示例使用 WeakMap

const wm1 = new WeakMap(), wm2 = new WeakMap(), wm3 = new WeakMap();const o1 = {}, o2 = function(){}, o3 = window;wm1.set(o1, 37);wm1.set(o2, 'azerty');wm2.set(o1, o2); // value可以是任意值,包括一個(gè)對(duì)象或一個(gè)函數(shù)wm2.set(o3, undefined);wm2.set(wm1, wm2); // 鍵和值可以是任意對(duì)象,甚至另外一個(gè)WeakMap對(duì)象wm1.get(o2); // 'azerty'wm2.get(o2); // undefined,wm2中沒(méi)有o2這個(gè)鍵wm2.get(o3); // undefined,值就是undefinedwm1.has(o2); // truewm2.has(o2); // falsewm2.has(o3); // true (即使值是undefined)wm3.set(o1, 37);wm3.get(o1); // 37wm1.has(o1); // truewm1.delete(o1);wm1.has(o1); // false實(shí)現(xiàn)一 個(gè)帶有 .clear() 方法的類(lèi) WeakMap 類(lèi)

class ClearableWeakMap { constructor(init) { this._wm = new WeakMap(init) } clear() { this._wm = new WeakMap() } delete(k) { return this._wm.delete(k) } get(k) { return this._wm.get(k) } has(k) { return this._wm.has(k) } set(k, v) { this._wm.set(k, v) return this }}規(guī)范

Specification Status Comment ECMAScript 2015 (6th Edition, ECMA-262) WeakMap Standard Initial definition. ECMAScript (ECMA-262) WeakMap Living Standard

以上就是JavaScript WeakMap使用詳解的詳細(xì)內(nèi)容,更多關(guān)于JavaScript WeakMap的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩视频网站| 黄色网一区二区| 欧美成人a交片免费看| 欧美国产另类| 国产精品久久乐| 国产三级精品三级在线观看国产| 久久狠狠婷婷| 欧美精品一二| 好看不卡的中文字幕| 亚洲女同中文字幕| 视频一区视频二区在线观看| 亚洲一区二区成人| 中文字幕中文字幕精品| 亚洲精品中文字幕99999| 日韩一区精品| 国产欧美日韩| 91日韩欧美| 欧美搞黄网站| 亚洲一区二区免费在线观看| 日韩在线播放一区二区| 中文字幕成人| 亚洲一区激情| 中文字幕日本一区二区| 日韩高清欧美激情| 国产精品白丝一区二区三区| 美女久久精品| 日本久久成人网| 天堂va在线高清一区| 国产精品大片| 婷婷综合激情| 日韩精品免费观看视频| 国产一区二区三区成人欧美日韩在线观看| 色爱av综合网| 欧美伊人久久| 精品91久久久久| 精品视频网站| 亚洲综合日韩| 伊人久久在线| 91午夜精品| 亚洲少妇自拍| 国产激情在线播放| 欧美一级网站| 国产毛片一区| 亚洲不卡av不卡一区二区| 午夜天堂精品久久久久| 欧美日韩尤物久久| 97成人在线| 视频在线在亚洲| 99视频精品视频高清免费| 欧美91在线| 日产欧产美韩系列久久99| 久久精品一区二区不卡| 亚洲人成亚洲精品| 久久国产影院| 亚洲精品88| 精品在线网站观看| 国产情侣一区在线| 日韩高清一区在线| 美国欧美日韩国产在线播放| 99国产精品免费视频观看| 国产黄大片在线观看| 精品国产黄a∨片高清在线| 欧美日韩一区二区国产| 日本亚洲三级在线| 免费在线观看一区二区三区| 日韩在线不卡| 国产 日韩 欧美 综合 一区| 国产精品国产三级在线观看| 国产日产高清欧美一区二区三区| 最新国产精品| 91成人在线| 国产极品模特精品一二| 精品视频97| 欧美日韩国产v| 激情欧美一区二区三区| 五月婷婷六月综合| 国产毛片一区| 日韩高清在线一区| 欧美视频二区| 国产伊人久久| 欧洲av一区二区| 欧美高清一区| 亚洲视频电影在线| 国产日产精品_国产精品毛片| 国产精品传媒麻豆hd| 日韩欧美一区二区三区免费看| 欧美成人午夜| 日本成人在线网站| av资源中文在线天堂| 亚洲成人三区| 国产日韩亚洲欧美精品| 成人啊v在线| 日韩中文av| 日本在线精品| 日本91福利区| 久久久久国产精品一区三寸| 欧美日韩国产一区精品一区| 日韩国产在线不卡视频| 欧美1区2区3区| 亚洲主播在线| 激情综合在线| 精品理论电影在线| 欧美精品导航| 一区二区三区视频免费观看| 日韩午夜视频在线| 国产拍在线视频| 日韩av网站在线免费观看| 日韩精品首页| 蜜桃久久久久| 亚洲tv在线| 伊人精品在线| 综合日韩av| 亚洲毛片网站| 在线一区电影| 久久国产日韩| 高清av一区| 国产精品久久久久9999高清| 亚洲激情中文在线| 日韩成人三级| 福利片在线一区二区| 国产精品蜜月aⅴ在线| 一区二区精品| 伊人成人在线视频| 久久久精品五月天| 国产v综合v| 麻豆理论在线观看| 精品国产乱码久久久久久樱花| 免费在线欧美视频| 国产综合视频| 91国语精品自产拍| 亚洲精品1区| 免费久久99精品国产自在现线| 欧美精选一区二区三区| 性欧美69xoxoxoxo| 国产精品毛片| 视频一区中文字幕国产| 亚洲一区二区动漫| 丝袜亚洲精品中文字幕一区| 丝袜美腿亚洲色图| 日韩一区免费| 国产精品久久久一区二区| 国产精品一区二区av交换| 亚洲精品少妇| 免费在线欧美黄色| 香蕉成人av| 亚洲一区久久| 国产精品第一| 日韩中文影院| 视频一区视频二区中文字幕| 日本h片久久| 中文字幕在线看片| 欧美午夜不卡| 国产探花一区| 日韩欧美午夜| 免费精品视频在线| 国产精品流白浆在线观看| 97国产精品| 欧美日韩精品一本二本三本| 日韩国产欧美在线视频| zzzwww在线看片免费| 香蕉成人久久| 你懂的亚洲视频| 国产亚洲一区在线| 国内一区二区三区| 久久亚洲精品伦理| 高清在线一区| 亚洲精品一二| 久久久久久久久99精品大| 日韩黄色免费网站| 亚洲国产专区校园欧美| 91p九色成人| 91久久黄色| 欧美91在线|欧美| 中文字幕免费精品| 色爱av综合网| 久久久久久久久成人| 久久亚洲色图| 久久免费大视频| 精品视频网站| 国产日韩一区二区三免费高清 | 免费日韩av片| 99久久99视频只有精品| 你懂的国产精品永久在线| 久久国产88| 99热国内精品| 欧美一级鲁丝片| 国产精品久久久久久久久久10秀| 欧美亚洲国产日韩| 亚洲另类视频| 日韩中文字幕区一区有砖一区| 久久免费大视频| 福利视频一区| 精品久久国产一区| 久久99国产精品视频| 国产精品红桃| 国内一区二区三区| 高清久久精品| 青青青免费在线视频| 久久国产欧美| 蜜桃精品在线|