004|JavaScript ES6新特性之Map&WeakMap

栏目: JavaScript · 发布时间: 7年前

内容简介:004|JavaScript ES6新特性之Map&WeakMap

Map

Map是一个存储key-value的容器,对象、基础类型均可以作为key或value。

var myMap = new Map();  var keyString = 'a string',     keyObj = {},     keyFunc = function() {};  // setting the values myMap.set(keyString, "value associated with 'a string'"); myMap.set(keyObj, 'value associated with keyObj'); myMap.set(keyFunc, 'value associated with keyFunc');  myMap.size; // 3  // getting the values myMap.get(keyString);    // "value associated with 'a string'" myMap.get(keyObj);       // "value associated with keyObj" myMap.get(keyFunc);      // "value associated with keyFunc"  myMap.get('a string');   // "value associated with 'a string'"                          // because keyString === 'a string' myMap.get({});           // undefined, because keyObj !== {} myMap.get(function() {}) // undefined, because keyFunc !== function () {}

一个对象也可以作为一个map来使用,那为什么es6还要引入Map?

  1. 对象的key只能是String、Symbol,而Map实际的key可以是任意类型。
  2. Map类型拥有size属性。
  3. Map类型中插入的key-value有序。

Map对象遵循iterable协议,可以使用for...of来遍历:

var myMap = new Map(); myMap.set(0, 'zero'); myMap.set(1, 'one'); for (var [key, value] of myMap) {   console.log(key + ' = ' + value); } // 0 = zero // 1 = one  for (var key of myMap.keys()) {   console.log(key); } // 0 // 1  for (var value of myMap.values()) {   console.log(value); } // zero // one  for (var [key, value] of myMap.entries()) {   console.log(key + ' = ' + value); } // 0 = zero // 1 = one

Map对象也提供了forEach方法来遍历:

myMap.forEach(function(value, key) {   console.log(key + ' = ' + value); });

Map能够与Array进行转换:

var kvArray = [['key1', 'value1'], ['key2', 'value2']];  var myMap = new Map(kvArray); myMap.get('key1'); // returns "value1"  console.log(Array.from(myMap)); // 还原为Array console.log(Array.from(myMap.keys())); // Will show ["key1", "key2"]

WeakMap

WeakMap的特性与Map基本上非常相似,有几点是不一样的:

  1. key必须是对象类型,不能是基础数据类型。
  2. key仅是弱引用,意味着可key引向的对象存在被垃圾回收的可能。
  3. WeakMap对象无法被遍历。

因为WeakMap内数据存在被回收的可能,所以WeakMap特别适用于作为数据缓存。

好了,这一节就到这里。生成函数是ES6新特性中的基础内容,希望你都掌握了。

什么是WeakSet?

请继续关注我的课程,我将在后续课程中帮大家依次解答上述问题。

004|JavaScript ES6新特性之Map&WeakMap

我的微信


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

App研发录:架构设计、Crash分析和竞品技术分析

App研发录:架构设计、Crash分析和竞品技术分析

包建强 / 机械工业出版社 / 2015-10-21 / CNY 59.00

本书是作者多年App开发的经验总结,从App架构的角度,重点总结了Android应用开发中常见的实用技巧和疑难问题解决方法,为打造高质量App提供有价值的实践指导,迅速提升应用开发能力和解决疑难问题的能力。本书涉及的问题有:Android基础建设、网络底层框架设计、缓存、网络流量优化、制定编程规范、模块化拆分、Crash异常的捕获与分析、持续集成、代码混淆、App竞品技术分析、项目管理和团队建设等......一起来看看 《App研发录:架构设计、Crash分析和竞品技术分析》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具