Map 和 WeakMap

Map

  1. map对象是一个简单的键/值映射。任何值(包括对象和原始值)都可以用作一个键或一个值。
var m = new Map();
var o = {p: "Hello World"};
m.set(o, "content")
m.get(o) // "content"```2. **Map**也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。

var map = new Map([["name", "张三"], ["title", "Author"]]);
map.size // 2
map.get("name") // "张三"
map.get("title") // "Author"```

  1. size属性 返回Map结构的成员总数。即返回映射对象中的键/值对的数目。
  2. set(k,v) 方法返回的是Map本身,因此可以采用链式写法。
  3. get(k) 方法读取key对应的键值,如果找不到key,返回undefined
  4. has(key) 方法返回一个布尔值,表示某个键是否在Map数据结构中。
  5. delete(key) 方法删除某个键,返回true。如果删除失败,返回false
  6. clear() 方法清除所有成员,没有返回值。
  7. keys():返回键名的遍历器
  8. values():返回键值的遍历器
  9. entries():返回所有成员的遍历器
  10. forEach():遍历Map的所有成员。

WeakMap

  1. WeakMap结构与Map结构基本类似,唯一的区别是它只接受对象作为键名(null除外),不接受其他类型的值作为键名**,而且键名所指向的对象,不计入垃圾回收机制。
var map = new WeakMap()
map.set(1, 2)
// TypeError: 1 is not an object!
map.set(Symbol(), 2)
// TypeError: Invalid value used as weak map key
  1. WeakMap的设计目的在于,键名是对象的弱引用(垃圾回收机制不将该引用考虑在内),所以其所对应的对象可能会被自动回收。当对象被回收后,WeakMap自动移除对应的键值对**。
  2. 典型应用是,一个对应DOM元素的WeakMap结构,当某个DOM元素被清除,其所对应的WeakMap记录就会自动被移除。基本上,WeakMap的专用场合就是,它的键所对应的对象,可能会在将来消失。WeakMap结构有助于防止内存泄漏。
  3. WeakMapMap在API上的区别主要是两个,一是没有遍历操作(即没有key()values()entries()方法),也没有size属性;二是无法清空,即不支持clear方法。这与WeakMap的键不被计入引用、被垃圾回收机制忽略有关。
  4. WeakMap只有四个方法可用:get()set()has()delete()**。

Map 和 WeakMap相关推荐

  1. 第十七节:ES6新增的Map和WeakMap 又是什么东西?

    上节介绍了Set和WeakSet,这节咱就讲Map和WeakMap是什么?当然,两者之前并没什么必然的联系,仅仅是用法类似. 什么是Map 介绍什么是Map,就不得不说起Object对象,我们都知道O ...

  2. Map与WeakMap

    Map与WeakMap Map对象用来保存键值对,并且能够记住键的原始插入顺序,任何对象或者原始值都可以作为键或者是值. WeakMap对象同样用来保存键值对,对于键是弱引用的而且必须为一个对象,而值 ...

  3. ES6 中的 Set、Map 和 WeakMap

    ES6 新增了几种集合类型,本文介绍 Set.Map 和 WeakMap.比较新的 Firefox.Chrome(需要在 about:flags 启用实验性 JavaScript)以及 IE11 都有 ...

  4. ES6——Map和WeakMap

    ES6 提供了新的数据结构 Map. 它有九个常用方法: 通过键检查元素是否存在 has(key) 添加元素 set(key , value) 通过键移除元素 delete(key) 通过键获取值 g ...

  5. 【ES6基础】Map与WeakMap

    开篇 ES6里除了增加了Set(集合)类型外(笔者在这篇文章<Set与WeakSet>有过介绍),今天的这篇文章笔者将继续介绍ES6引入的新类型--Map(映射类型)和其对应的弱类型Wea ...

  6. 初探ES6中的Map和WeakMap

    Map 对象保存键值对.任何值(对象或者原始值) 都可以作为一个键或一个值. 使用映射对象 let myMap=new Map(); let keyObj={},keyfunc=function(){ ...

  7. ES6(三)——Set、WeakSet、Map、WeakMap

    一.Set的基本使用 在ES6之前,我们存储数据的结构主要有两种:数组.对象. 在ES6中新增了另外两种数据结构:Set.Map,以及它们的另外形式WeakSet.WeakMap. Set是一个新增的 ...

  8. set和map去重调用什么方法_你真的了解ES6的Set,WeakSet,Map和WeakMap吗?

    之前在学习 ES6 的时候,看到 Set 和 Map,不知道其应用场景有哪些,只觉得很多时候会用在数组去重和数据存储,后来慢慢才领悟到 Set 是一种叫做集合的数据结构,Map 是一种叫做字典的数据结 ...

  9. map与weakmap,ES6 Map和WeakMap有什么区别?

    Looking this and this MDN pages it seems like the only difference between Maps and WeakMaps is a mis ...

最新文章

  1. 女朋友分手那天,女朋友说闺蜜老公收入是我 5 倍!还不去这些公众号学习?...
  2. Socket通信总结(附C++实现)
  3. 认证拦截功能需求分析
  4. 605. 种花问题003(贪心算法+思路+详解)
  5. mybatis入门(六)之SQL语句构建器类
  6. Adonis结果P值小于0.05,一定代表两组样品物种构成差异显著吗?
  7. Codeforces Round #250 (Div. 2)—A. The Child and Homework
  8. Java建造者模式详解
  9. 【转载】4412开发板、PC、ubuntu通过网线连接
  10. float类型转integer_【第3章:Java基础程序设计】_Java数据类型
  11. [TWRP 2.8.4 ] 小米 3W 中文-英文版本 twrp
  12. 在Vue中使用Aliplayer,做视频播放或者视频监控
  13. typescript获取时间戳
  14. 收藏有关信号处理的博客
  15. 【笔记】Robust High-Resolution Video Matting with Temporal Guidance
  16. 三层交换机dhcp服务器性能,CISCO三层交换机怎么配置DHCP服务?
  17. 对物理量“角速度”与“波矢”的理解
  18. 小博老师解析Java核心技术 ——JDBC普通增删改操作
  19. 选磁芯的AP法到底是什么?
  20. 使用python爬取有道词典翻译

热门文章

  1. asp.net中的报销多级审批工作流 (状态机版本)
  2. Google Maps API V3: 通过邮编获取经纬度 Get Location (Latitude and Longitude) from Zip Cod
  3. tomcat调优的几个方面
  4. LeetCode 485. Max Consecutive Ones
  5. 【今日CV 计算机视觉论文速览 第110期】Thu, 2 May 2019
  6. mysql 修改编码不成功解决办法
  7. 小动画制作 图片盒子配合定时器 winform 114869633
  8. 演练 获取所有电视频道 FullChannels.xml c# 1614256914
  9. 泛型字典 0104 c# 1613648530
  10. linux-三个文件-用户文件-组文件-密码文件