接下来扯一下ES6的数据类型,ES6新引入了一种Symbol的原始数据类型来表示独一无二的值。它和undefined、null、Boolean、String、Number、Object组成ES6的数据类型。
Symbol值由Symbol()函数生成,这代表对象的key值可以有两种类型,一种是string,一种是symbol,并且Symbol类型的值独一无二,不会和其他值产生冲突。Symbol函数前不能使用new命令,因为它是属于原始数据。Symbol() 函数中可以添加参数,来做描述(其实就是个标示);可以通过toSting转换成字符串(貌似什么东西都可以或多或少的toString或者valueOf转换成字符串);Symbol值不等即使同参数也不等且不能进行计算,但是倒是可以转化为boolean值。
Symbol值作为属性,不能被以json.xx引出,只能以json[xx],因为.后都是跟着字符串,而symbol是一种与字符串完全不同的数据类型。Symbol作为属性时,无法被常规的方法遍历出来,只能通过getOwnPropertySymbols方法查出来。
接下来呢,说一些set,一种类数组的数据结构,和map,一种类对象的结构。
set,一种类数组的数据结构,但是其中没有重复的值,利用这点呢,可以搞个数组去重,具体怎么搞,自己去探索去。set结构可以利用new set(arr)生成,也可以利用add添加,利用add添加的时候不会对添加的数据类型做出改变。重点:set中的不包含重复值呢,是类型 || 值均不等,除了NaN剩下的值只要是有类型或者值不同的都算是非重复值,这个跟等同运算度(采用严格的同一性定义检测两个运算数是否完全等同)相似。set的长度为size不是length,方法是add(添加),delete(删除),has(是否存在),clear(清空)。具体关于它的数据遍历什么跟ES6中的数组遍历方法差不多。
map,一种类对象的数据结构,但是它的key值可以是任何数据类型,不局限与字符串。map可以采用new map([[key,value]])生成,也可以用set向其中添加,而且同样的值定义的两个变量可以作为两个key值。map中的属性方法大致和set同,只不过多了个get(key)获取对应value值,如果key不存在返回undefined。
今天写的就这些吧,多的想不起来啦,以后想起来再补吧。
网友评论