ECMAScript6中Map/WeakMap详解


Posted in Javascript onJune 12, 2015

JS的对象本身就是个键值结构,ES6为什么还需要加Map呢,它与普通的JS对象有何区别?

一、Map

1. Map构造器

先看Map的简单用法

// 字符串作为key, 和JS对象类似
var map = new Map()
// set
map.set('name', 'John')
map.set('age', 29)
// get
map.get('name') // John
map.get('age') // 29

这么对代码,看起来确实没有JS对象简洁

但Map的强大之处在于它的key可以是任意类型

// 对象作为key演示
var xy = {x: 10, y: 20}  // 坐标
var wh = {w: 100, h: 200} // 宽高
var map = new Map()
// set
map.set(xy, '坐标')
map.set(wh, '宽高')
// get
map.get(xy) // '坐标'
map.get(wh) // '宽高'

以上演示了用对象作为key的Map。以下为图示

ECMAScript6中Map/WeakMap详解

Map构造器还支持传数组方式

var map = new Map([["name", "John"], ["age", "29"]])
 
// 遍历key
for (var key of map.keys()) {
  console.log(key) // name, age
}

2. 迭代

和Set一样用for of来迭代Map,键调用map.keys(),值调用map.values(),键值实体调用map.entries()

var map = new Map()
// set
map.set('name', 'John')
map.set('age', 29)
// get
map.get('name') // 'John'
map.get('age') // 29
 
// 遍历key
for (var key of map.keys()) {
  console.log(key)
}
 
// 遍历value
for (var val of map.values()) {
  console.log(val)
}
 
// 遍历实体
for (var arr of map.entries()) {
  console.log('key: ' + arr[0] + ', value: ' + arr[1])
}
 
// 遍历实体的简写
for (var [key, val] of map.entries()) {
  console.log('key: ' + key + ', value: ' + val)
}

3. 方法和属性

ECMAScript6中Map/WeakMap详解

二、WeakMap

与Map的区别

不接受基本类型的值作为键名
没有keys、values、entries和size
有以下方法

ECMAScript6中Map/WeakMap详解

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
javascript下给元素添加事件的方法与代码
Aug 13 Javascript
window.addeventjs事件驱动函数集合addEvent等
Feb 19 Javascript
Jquery 基础学习笔记之文档处理
May 29 Javascript
原生js和jQuery随意改变div属性style的名称和值
Oct 22 Javascript
jQuery validate 验证radio实例
Mar 01 Javascript
AngularJS表格添加序号的方法
Mar 03 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
May 01 Javascript
layer.open回调获取弹出层参数的实现方法
Sep 10 Javascript
taro 实现购物车逻辑的实例代码
Jun 05 Javascript
JavaScript常用8种数组去重代码实例
Sep 09 Javascript
vue 解决provide和inject响应的问题
Nov 12 Javascript
jquery实现穿梭框功能
Jan 19 jQuery
JavaScript中Date.toSource()方法的使用教程
Jun 12 #Javascript
ECMAScript6中Set/WeakSet详解
Jun 12 #Javascript
JavaScript中的toLocaleDateString()方法使用简介
Jun 12 #Javascript
ECMAScript6块级作用域及新变量声明(let)
Jun 12 #Javascript
JavaScript中的toDateString()方法使用详解
Jun 12 #Javascript
ECMAScript6新增值比较函数Object.is
Jun 12 #Javascript
ECMAScript6函数剩余参数(Rest Parameters)
Jun 12 #Javascript
You might like
如何对PHP程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
JavaScript简单计算人的年龄示例
2017/04/15 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
在Python中使用__slots__方法的详细教程
2015/04/28 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
2019/08/01 Python
Python中sys模块功能与用法实例详解
2020/02/26 Python
Python PIL库图片灰化处理
2020/04/07 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
.NET面试10题
2014/02/24 面试题
护士求职推荐信范文
2013/11/23 职场文书
教学大赛获奖感言
2014/01/15 职场文书
高二历史教学反思
2014/01/25 职场文书
大学校务公开实施方案
2014/03/31 职场文书
师范生自荐信模板
2014/05/28 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
刑事上诉状范文
2015/05/22 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python