ES6 WeakMap和WeakSet的使用场景】的更多相关文章

JavaScript垃圾回收是一种内存管理技术.在这种技术中,不再被引用的对象会被自动删除,而与其相关的资源也会被一同回收. Map和Set中对象的引用都是强类型化的,并不会允许垃圾回收.这样一来,如果Map和Set中引用了不再需要的大型对象,如已经从DOM树中删除的DOM元素,那么其回收代价是昂贵的. 为了解决这个问题,ES6还引入了另外两种新的数据结构,即称为WeakMap和WeakSet的弱集合.这些集合之所以是“弱的”,是因为它们允许从内存中清除不再需要的被这些集合所引用的对象.…
从引用聊到深浅拷贝,从深拷贝过渡到ES6新数据结构Map及Set,再到另一个map即Array.map()和与其类似的Array.flatMap(),中间会有其他相关话题,例如Object.freeze()与Object.assign()等等. 前言 一边复习一边学习,分清引用与深浅拷贝的区别,并实现浅拷贝与深拷贝,之后通过对深拷贝的了解,拓展到ES6新数据结构Map及Set的介绍,再引入对另一个数组的map方法的使用与类似数组遍历方法的使用.通过一条隐式链将一长串知识点串联介绍,可能会有点杂,…
对象.Map.Set.WeakMap.WeakSet 本文写于 2020 年 11 月 24 日 总的来说,Set 和 Map 主要的应用场景分别在于数据重组和数据储存.Set 是一种叫做「集合」的数据结构,Map 是一种叫做「字典」的数据结构. 太长不看版本 Set 成员不能重复: 只有键值,没有健名,有点类似数组: 可以被遍历,方法有 add, delete, has. WeakSet 成员都是对象: 成员都是弱引用,随时可以消失,因此可以用来保存 DOM 节点,不容易造成内存泄漏: 不能遍…
“DOM 引用造成内存泄露”这一点我们可以使用WeakMap或者WeakSet存储DOM节点,DOM被移除掉WeakMap或者WeakSet内部的DOM引用会被自动回收清除 https://juejin.im/post/5b684f30f265da0f9f4e87cf…
这些是新加的集合类型,提供了更加方便的获取属性值的方法,不用像以前一样用hasOwnProperty来检查某个属性是属于原型链上的呢还是当前对象的.同时,在进行属性值添加与获取时有专门的get,set 方法. // Sets var s = new Set(); s.add("hello").add("goodbye").add("hello"); s.size === 2; s.has("hello") === true;…
WeakMap: is a type of Map where only objects can be passed as keys. Primitive data type -- such are string, numbers, booleans, etc --- are not allowed. let user = {}; let comment = {}; let mapSettings = new WeakMap(); mapSettings.set(user, "user"…
一.变量交换 1.ES6的方式 { let a=; let b=; [a,b]=[b,a]; console.log(a,b); } 输出为 2.ES5的方式 采用中间变量的方式进行存储 二.获取函数返回值是数组的情况 1.ES6 { function f(){ return [,] } let a,b; [a,b]=f(); console.log(a,b); } 输出为 2.ES5 先给一个变量获取函数的返回结果,再按索引获取两个值 三.返回多个值,选择性的接受某几个变量 1.ES6 { f…
WeakMap与Map的区别 1.WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名. 2.WeakMap的键名所指向的对象,不计入垃圾回收机制. 示例: const wm = new WeakMap(); const element = document.getElementById('example'); wm.set(element, 'some information'); wm.get(element) // "some information" 上…
1. Set Set是一个集合,里面的值都是唯一的,没有重复的.Set中可以是任何数据类型,并且添加数据时会进行严格比较,重复数据无法加入. 2. WeakSet 弱引用Set.只能存储对象,不能存储其他类型.且只保持对其中对象的弱引用,若外部无对此对象的引用,或者对象被删除,则WeakSet中将不再有此对象. 因为成员都是弱引用,随时可能消失,遍历不能保证成员的存在.所以 WeakSet 不能遍历 3. Map Map是一个键值对. Map与Object的区别是: 1. Object的key只…
Set Set 对象允许储存任何类型的唯一值,无论是原始值或者是对象引用 本质:构造函数,用来生成 Set 数据结构 描述 Set 对象是值的集合,你可以按照插入的顺序迭代它的元素.Set 中的元素只会出现一次,即 Set 元素是唯一的. 相当于集合,可以进行并集交集运算. 值的相等 对于原始数据类型(boolean,number,string,null,undefined),如果储存相同值则只保存一个,对于引用类型,引用地址完全相同则只会存一个. +0 与-0 在存储判断唯一性的时候是恒等的,…