浅析Map和WeakMap有什么不同之处强/弱引用的区别WeakMap详解map的缺点和使用WeakMap的好处古兰精

1、Map是为了解决对象中的key只能为字符串的缺陷

//基本的对象constobj={'name':'张飞',,'age':18}//Mapletm=newMap()a.set(obj,1)我们的Map是可以解决对象的key不能为对象的缺陷,但是又随之而来了一个缺点:耗费内存,强引用

2、什么是强/弱引用

就是创建引用之后,无法被垃圾资源回收机制进行回收的,就是强引用。强到你设置了null,也分不开。

constrefence=[[obj:1]]现在我们把obj赋值为null,但是我们的[obj:1]是一个数组,也是一个引用的类型,把obj赋值为了空,但是refence和数组之前还是存在引用的关系,所以无法分开。

因为我们都知道为了防止内存泄漏,通常把一个对象使用完之后设置为null,那如果是上面这种情况,就算你设为null也无法垃圾回收了。

3、WeakMap和Map的区别

ES6考虑到了这一点,推出了:WeakMap。它对于值的引用都是不计入垃圾回收机制的,所以名字里面才会有一个"Weak",表示这是弱引用(对对象的弱引用是指当该对象应该被GC回收时不会阻止GC的回收行为)。

(1)强/弱引用的区别:Map强,WeakMap弱

(2)WeakMap只接受对象为key值

在实现完美的深拷贝中,我们使用WeakMap代替Map的使用来解决循环引用的问题,进行优化。

Map相对于WeakMap:

(1)Map的键可以是任意类型,WeakMap只接受对象作为键(null除外),不接受其他类型的值作为键

(2)Map的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键;WeakMap的键是弱引用,键所指向的对象可以被垃圾回收,此时键是无效的

(3)Map可以被遍历,WeakMap不能被遍历

只要外部的引用消失,WeakMap内部的引用,就会自动被垃圾回收清除。由此可见,有了它的帮助,解决内存泄漏就会简单很多。

MDN上说WeakMap对象是一组键/值对的集合,其中的键是弱引用的。其键必须是对象,而值可以是任意的。

注意,WeakMap弱引用的只是键名,而不是键值。键值依然是正常引用。

WeakMap中,每个键对自己所引用对象的引用都是弱引用,在没有其他引用和该键引用同一对象,这个对象将会被垃圾回收(相应的key则变成无效的),所以,WeakMap的key是不可枚举的。

语法也很简单:constwp=newWeakMap();

在使用的过程中我们需要注意WeakMap的key只能是Object类型

//创建一个在每个实例中存储私有变量的对象constinternal=obj=>{if(!wp.has(obj)){wp.set(obj,{});}returnwp.get(obj);}classShape{constructor(width,height){internal(this).width=width;internal(this).height=height;}getarea(){returninternal(this).width*internal(this).height;}}constsquare=newShape(10,10);console.log(square.area);//100console.log(map.get(square));//根据对象获得返回值{height:100,width:100}上面代码示例看到我们通过internal(this)然后去设置其属性。然后可以通过map.get(square)获取到square对象。

WeakMap好处是在遍历属性时或者在执行JSON.stringify时不会展示出实例的私有属性,但它依赖于一个放在类外面的可以访问和操作的WeakMap变量,WeakMap每个键对自己所引用对象的引用是"弱引用",这意味着如果没有其他引用和该键引用同一个对象,这个对象将会被当作垃圾回收,从而得到不确定的结果。

就是说WeakMap里面的数据可能被垃圾回收机制清除或者一个对应在WeakMap结构的对象在外部被删除时,上述情况所对应的WeakMap的键值对也会被自动被移除。因此,如果你想要这种类型对象的key值的列表,你应该使用Map。

常用方法:

(1)WeakMap.prototype.delete(key):移除key的关联对象。执行后WeakMap.prototype.has(key)返回false

(2)WeakMap.prototype.get(key):返回key关联对象,或者undefined(没有key关联对象时)。

(3)WeakMap.prototype.has(key):根据是否有key关联对象返回一个Boolean值。

(4)WeakMap.prototype.set(key,value)在WeakMap中设置一组key关联对象,返回这个WeakMap对象。

(5)WeakMap.prototype.clear()从WeakMap中移除所有的key/value。(参考WeakMap)

除了WeakMap还有WeakSet都是弱引用,可以被垃圾回收机制回收,可以用来保存DOM节点,不容易造成内存泄漏。

THE END
1.古兰经诵读学,古兰经读法规则讲解影音视频so.iqiyi.com 2021-6-23 17:29 05:04 古兰经诵读学,古兰经读法规则讲解 发布时间: 2019-08-22 来源: 好看 回复编辑?顶?沉 影音视频访问链接 以下链接为影音视频“古兰经诵读学,古兰经读法规则讲解”在线访问地址,点击链接就可以访问查看啦 haokan.baidu.com***/v548932 https://www.xiaoso.net/t/139288610
2.金镖:《辞朝演说》解析之八:以《古兰》圣训为准绳这个次序是真主为我们规定的,在执行中绝不能打乱。然而在现实中,有些人将公决和类比妄置于《古兰》和圣训之上,这是原则性的错误,是本末倒置的做法。 亲爱的穆斯林兄弟们!感谢真主,如今在许多地方,学习《古兰》,讲解《古兰》的学习班如雨后春笋般涌现出来。不少清真寺都开课讲授六大部圣训,这是一个很好的开端http://www.muslimwww.com/html/2014/jb_0217/22150.html
3.《黄牛章》古兰经第四页第十行1、总目录《古兰经》章节词法讲解;诵读、平读及嘎最翻译 2、第二章《黄牛章》全部词法、语法讲解总目录 3、第一卷《开端章》《黄牛章》词法、语法讲解总目录 4、第二卷(本)《古兰经》词法、语法讲解总目录 5、第三卷(本)《古兰经》词法、语法讲解总目录 https://kxion.com/article/2124.html
4.古兰县古蔺县属于四川省哪个市大家好,小宜来为大家讲解下。古兰县,古蔺县属于四川省哪个市这个很多人还不知道,现在让我们一起来看看吧!古兰县有着悠久的历史文化,这里https://bbs.bangkaow.com/bbs/202306/1068076.html
5.《古兰经》是哪个教的圣书?声明: 本网站大部分资源来源于用户创建编辑,上传,机构合作,自有兼职答题团队,如有侵犯了你的权益,请发送邮箱到feedback@deepthink.net.cn 本网站将在三个工作日内移除相关内容,刷刷题对内容所造成的任何后果不承担法律上的任何义务或责任 https://www.shuashuati.com/ti/8a610aff0b244639bfcfc6a07129b8cf.html
6.做礼拜试题答案解析,做礼拜试题答案解析1婴儿出生要到教堂受洗、起教名、指定教父。长大后要定期到教堂做礼拜,聆听牧师讲解圣经,向牧师忏悔过错。结婚时到教堂举 查看答案 下图为银川南关清真寺,是当地重要的旅游景点,每天都有众多的穆斯林来做礼拜。根据图文信息和所学知识,它所反映的宗教信 https://www.ggtiku.com/wtk/so-%E5%81%9A%E7%A4%BC%E6%8B%9C.html
7.古尔邦节的习俗和风俗(古尔邦节的习俗讲解)据古兰经记载,即先知伊卜拉欣直到晚年也没有儿子。他祈求真主安拉赐给他一个儿子。不久,伊卜拉欣果然有了儿子, 他衷心感谢真主的恩赐,精心抚养幼子。十几年后的一天夜里,伊卜拉欣做了一个梦,梦见真主安拉命令他把心爱的儿子宰掉献祭以考验他的诚心。伊卜拉欣惟命是从毫无迟疑,他懂事的儿子也毫无惧色并鼓励父亲宰https://dict.shualue.com/juzi/154422.html
8.法的渊源有哪些?1. 宗教:早期的法律多是由宗教组织制定的,比如犹太教的《摩西五经》和伊斯兰教的《古兰经》等。2. 习惯法:随着社会的发展,人们逐渐形成了一些共同的行为规范和惯例,这些规范和惯例逐渐演变成为习惯法。3. 判例法:判例法是指法官根据先前的判例和司法实践,对具体案件做出判决并形成的法律原则和规则。4. 立法:现代https://www.chinaacc.com/chujizhicheng/jhwd/zy20240827184508.shtml
9.碧蓝幻想Relink全角色专属双因子效果详情导读最近很多玩家都有求助碧蓝幻想Relink全角色专属双因子效果,下面九游小编就来详细的为大家讲解一下,一起来看看吧。 碧蓝幻想Relink全角色专属双因子效果 一、拉卡姆:操舵士的觉醒+slv15 最近很多玩家都有求助碧蓝幻想Relink全角色专属双因子效果,下面九游小编就来详细的为大家讲解一下,一起来看看吧。 https://www.9game.cn/news/9854931.html
10.阿的解释汉语字典〖ahung;Akhun;Imam;Mulla〗主持伊斯兰教的各种仪式,讲解古兰经的人阿拉伯胶ālābójiāo〖gumarabic〗一种水溶性的胶,从几种金合欢属植物(尤指Acaciasenegal阿拉伯胶树和A.arabica阿拉伯金合欢)中得到,特别用于制造粘合剂、墨水和糖果,用于纺织品的精加工和制药阿拉伯数字ālābóshùzì〖Arabicnumeral(figures)〗0、https://www.suuxx.com/tools/zidian/zidian_609.html
11.解释“阿”字的含义新华字典汉语字典在线查“阿”的注释和意思【注释】:阿1 ā 〈助〉 (1) (汉语名词词头,盛行于魏晋以后) (2) 加在亲属称呼前面有亲昵的意味 阿姊闻妹来。――《乐府诗集·木兰诗》 府吏得闻之,堂上启阿母。――《玉台新咏·古诗为焦仲卿妻作》。 (3) 又如:阿爷(又作“阿耶”。称父亲);阿翁(称祖父;称父亲;妇女称丈夫之父);阿嫂(对朋友http://cm.cdqmw.com/zidian/show.asp?zi=%B0%A2
12.用《古兰经》完善品德造福社会这段经文从三个方面总结了《古兰经》对于人类的重大意义,第一是教诲,第二是治疗心病的良药,第三是对信士的引导和慈恩。听完这位姐妹的讲解,我感觉这段经文足以概括《古兰经》对人类的重大意义。穆斯林如果能够理解了这段经文,将受益无穷。 这让我想到,真主在《古兰经》中反复提醒诉我们,人类都来自安拉,最终将http://www.pacilution.com/ShowArticle.asp?ArticleID=6534
13.古兰经注其答复是:最正确的方法是以《古兰》注释《古兰》,因为《古兰》中某一地方概述的内容,在另一地方将会详述;如果《古兰》中没有详述之,应当在圣训中寻找注释,因为圣训就是对《古兰》的注解。清高伟大的安拉说:(我确以真理而为你降下经典,以便你以安拉昭示给你的在人们之间判决。你不要成为背弃者的辩护员。)(4:https://www.sklib.cn/booklib/bookPreview?SiteID=122&ID=2491467
14.目前可兰经古兰经最新章节目录可兰经古兰经34章异常,军事”日本无矿转码直接进入2023”|的环境影响,讲解棉签加冰块怎么弄出牛奶(黄)-\-\-千龙网,白肺100%还有救吗_寻医问药网|1:155fun.黑料热点事件,diy101私家车2.1.0官方v9.68.1 安卓-,海角社区封神披风妈妈:重返神封时刻的母亲-微思游戏。 时事2:重温麻花老剧,嗨唱《md0174苏蜜清歌》!-国际http://m.ruhrg.com/v/video/20241208/301030aKXPR.shtml?scm=320241209
15.走进伊斯兰教论读古兰经英语演讲相对于圣经里那些仅仅是对男同胞的讲解,即以第二和第三男性人称的叙述部分, the Koran includes women -- talking, for instance, of believing men and believing women, honorable men and honorable women. 古兰经顾及到了女同胞--例如,信男和信女--可敬的男人和可敬的女人。 Or take the infamous verse abohttps://www.kekenet.com/Article/201712/535697.shtml
16.学习《古兰经》之体会二努伦丁延光165祈求袮让我永远不要远离礼拜,不要远离对《古兰》的学习。 父亲总在我遇到困难的时候让我诵读《古兰经》第94章,第5节和第6节:“与艰难相伴的,确是容易”,“与艰难相伴的,确是容易”,父亲总是在讲解这段经文的时候会眼露激动的说:“这就是安拉教导人类的真正的辩证学”,那时我总是用自己浅薄的对辩证学的https://blog.sina.cn/dpool/blog/s/blog_772453370101444p.html
17.《古兰经》的翻译和研究世界宗教资料1994年03期《古兰经》的翻译和研究周燮藩《古兰经》的流传和译解《古兰经》定本颁布后,主要靠手抄本和口头传授流传于世。在早期,诵经师和说故事人的背诵和讲解,曾起过重要作用。宗教学者研究古兰学的巨大努力,一直延续到今天。在穆斯林世界,教读、背诵和抄写《古兰经》,是特 [https://wap.cnki.net/qikan-RELI403.009.html