新增的es6数据结构是什么
导读:本文共4526.5字符,通常情况下阅读需要15分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 新增结构有:1、Symbol,表示独一无二的值,是一个函数结构;2、Set,指的是“集合”结构,类似数组,允许存放无序且不能重复的数据;3、WeakSet,类似Set,内部数据也不能有重复值;4、Map,指的是“字典”结构,可存储映射关系。本教程操作... ...
目录
(为您整理了一些要点),点击可以直达。
新增结构有:1、Symbol,表示独一无二的值,是一个函数结构;2、Set,指的是“集合”结构,类似数组,允许存放无序且不能重复的数据;3、WeakSet,类似Set,内部数据也不能有重复值;4、Map,指的是“字典”结构,可存储映射关系。
本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。
1、Symbol
Symbol
是ES6
中新增的一个基本数据类型之一,它是一个函数。每一个从Symbol
函数返回的Symbol
值都是独一无二的,symbol
值作为对象属性的标识符,也是唯一的用途的。
symbol作为key
第一种方式,直接在对象的字面量中添加。
第二种方式,通过添加数组方式添加。
第三种方式,通过对象中的defineProperty
方法添加。
通过symbol获取对应的值
需要用数组方式来获取,不能通过点语法,否则会获取到字符串key。
symbol
不能被隐式转换成string
类型。
注意:Symbol函数中的参数是symbol描述符,这是在ES10新增的特性
我们不能直接alert
一个symbol
对象,但是我们可以通过toString
的方式或者.description
来获取symbol
对象的描述符。
遍历symbol
在使用for
遍历、object.keys
中是获取不到symbol
健的,对此object
还提供了getOwnPropertySymbols
方法,用于获取对象中所有symbol的key。
全局symbol对象注册
有时,我们可能需要多个symbol
的值是一致的,我们可以通过symbol
提供的静态方法for
方法传入一样的描述符来使它们的值一致。
Symbol.for
该方法会在使用给定键搜索运行时符号注册表中的现有符号,并在找到时返回它。否则,使用此键在全局符号注册表中创建一个新符号。
Symbol.keyFor
该方法用于获取全局symbol
的描述符。
2、Set
Set
对象(类似数组)允许你存放任何数据类型,但里面的值不能重复。
Set常用方法
3、WeakSet
WeakSet
是类似Set
的另外一种数据结构,内部数据也不能有重复值。
它与Set
的区别
WeakSet
只能存放对象类型,不能存放基本数据类型
WeakSet
对元素是弱引用
基本使用
WeakSet常用方法
关于遍历
WeakSet
不能被遍历,因为它只是对对象进行弱引用,如果遍历去获取元素,有可能导致对象不能被GC
回收。
所以WeakSet
中的对象是不能获取的
4、Map
ES6
新增的数据结构,用于存储映射关系。我们知道在JavaScript
中对象中是不能用对象来作为key
的。(假如我们把对象作为key
,其内部会将对象转换为字符串[object object]
)
而Map
则可以把对象作为key
进行存储,可以通过set
方法添加到Map
中,也直接通过字面量的方式添加。
Map常用方法
遍历Map
通过foreach
语句遍历Map
通过for..of
遍历Map
5、WeakMap
和Map
类似,也是以键值对的形式存在的
和Map的区别
WeakMap
的key
只能使用对象,不接受其他的类型作为key
WeakMap
的key
对对象是弱引用
基本使用
WeakMap常用方法
关于遍历
和WeakSet
一样,正因为它是弱引用,WeakMap
的key
是不可枚举的,如果key
可枚举那其列表将会受GC
影响。
新增的es6数据结构是什么的详细内容,希望对您有所帮助,信息来源于网络。