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?
- 对象的key只能是String、Symbol,而Map实际的key可以是任意类型。
- Map类型拥有size属性。
- 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基本上非常相似,有几点是不一样的:
- key必须是对象类型,不能是基础数据类型。
- key仅是弱引用,意味着可key引向的对象存在被垃圾回收的可能。
- WeakMap对象无法被遍历。
因为WeakMap内数据存在被回收的可能,所以WeakMap特别适用于作为数据缓存。
好了,这一节就到这里。生成函数是ES6新特性中的基础内容,希望你都掌握了。
什么是WeakSet?
请继续关注我的课程,我将在后续课程中帮大家依次解答上述问题。

我的微信
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 『互联网架构』软件架构-redis特性和集群特性(中)(49)
- 『互联网架构』软件架构-redis特性和集群特性(上)(48)
- 『互联网架构』软件架构-redis特性和集群特性(下)(50)
- JDK 14 功能特性
- C# 特性(Attribute)
- python—高级特性
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Google 广告高阶优化(第3版)
【美】Brad Geddes(布兰德.盖兹) / 宫鑫、康宁、王娜 / 电子工业出版社 / 2015-9 / 99.00元
《Google 广告高阶优化(第3版)》可以说是Google AdWords的终极指南,内容非常丰富,第三版在内容上进行了全面更新。介绍了AdWords的最新最完整的功能,阐释其工作原理,也提供了相应的优化方法、策略和实践教程,读者可以随时在自己的PPC广告系列中进行实践。第三版增添了50多页新内容,涵盖Google系统最近的所有变动,包括广告系列结构的变化、出价调整器、重定向、视频广告功能、全新......一起来看看 《Google 广告高阶优化(第3版)》 这本书的介绍吧!