JavaScript中Object、Map、WeakMap有何本质区别,适用场景有何不同?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2040个文字,预计阅读时间需要9分钟。
前言:ECMAScript 6(ES6)之前,在JavaScript中实现键/值式存储可以使用Object来方便高效地完成,也就是使用对象属性作为键,再通过属性访问值。这种方法利用了对象的特性,使得键值对的存储和访问变得简单快捷。尽管这种实现方式没有问题,但TC39委员会仍会专门讨论这一问题。
前言
ECMAScript 6以前,在JavaScript中实现“键/值”式存储可以使用Object来方便高效地完成,也就是使用对象属性作为键,再使用属性来引用值。但这种实现并非没有问题,为此TC39委员会专门为“键/值”存储定义了一个规范。作为ECMAScript 6的新增特性,Map是一种新的集合类型,为这门语言带来了真正的键/值存储机制。Map的大多数特性都可以通过Object类型实现,但二者之间还是存在一些细微的差异。具体实践中使用哪一个,还是值得细细甄别。
一、map 的使用
初始化
object 可以使用字面量、构造函数、Object.crate的形式创建。而map 只能通过new 关键字和构造函数创建。对于map如果想在创建的同时初始化实例,可以给Map构造函数传入一个可迭代对象,需要包含键/值对数组。
本文共计2040个文字,预计阅读时间需要9分钟。
前言:ECMAScript 6(ES6)之前,在JavaScript中实现键/值式存储可以使用Object来方便高效地完成,也就是使用对象属性作为键,再通过属性访问值。这种方法利用了对象的特性,使得键值对的存储和访问变得简单快捷。尽管这种实现方式没有问题,但TC39委员会仍会专门讨论这一问题。
前言
ECMAScript 6以前,在JavaScript中实现“键/值”式存储可以使用Object来方便高效地完成,也就是使用对象属性作为键,再使用属性来引用值。但这种实现并非没有问题,为此TC39委员会专门为“键/值”存储定义了一个规范。作为ECMAScript 6的新增特性,Map是一种新的集合类型,为这门语言带来了真正的键/值存储机制。Map的大多数特性都可以通过Object类型实现,但二者之间还是存在一些细微的差异。具体实践中使用哪一个,还是值得细细甄别。
一、map 的使用
初始化
object 可以使用字面量、构造函数、Object.crate的形式创建。而map 只能通过new 关键字和构造函数创建。对于map如果想在创建的同时初始化实例,可以给Map构造函数传入一个可迭代对象,需要包含键/值对数组。

