目录
01 对象的扩展
02 链判断运算符
03 属性名表达式
04 Symbol 类型
05 set集合的使用
06 Map集合的使用
07 Set集合和Map集合的遍历方式
08 iterator迭代器
01 对象的扩展
对象的属性和方法的简洁表示:
es6允许在字面量对象里面直接写变量名
let 变量名=变量值;
let 对象 = { 变量名 }
变量名是属性名 变量值是属性值
相当于:
let 变量名=变量值
let 对象={属性名:变量名}
函数的简洁表示:
之前的写法:
对象={
函数名:function(){}
}
es6新写法:
对象={
函数名(){ } //这样的写法是函数的简写 不是箭头函数
}
字面量对象的存值器和取值器: (了解)
02 链判断运算符
链判断运算符:
格式 : 对象?.属性名1?.属性名2?.属性名n
这种写法是用来判断 属性是否存在 如果不存在 则整个表达式返回undefined不至于报错
链判断运算符不能用于赋值操作
null判断运算符:
let str =show() ?? "默认值"
只有show()方法的返回值为null或者undefined 时才取默认值
03 属性名表达式
在字面量里面 [ 属性名 ] 可以把属性名写成表达式的形式
04 Symbol 类型
symbol 类型是一种独一无二的类型 所有的symobol的值都是独一无二的
通过symbol函数调用 可以返回一个独一无二的值
symbol函数可以传入一个字符串 用来表示当前symbol
即使symbol函数中传入的字符串一样 symbol类型的值也是不同的
es6中增加了一种数据类型 symbol类型 可以作为属性名
Symbol类型的属性调用Objec.keys系列方法是拿不到的
05 set集合的使用
js数组的弊端:
不能查重 键是索引值 无法很好的描述当前的值
Set集合:
格式: const s =new Set()
特点: 元素不允许重复 放入的元素自动查重
没有索引值功能
方法:
增加元素: 集合名.add( )
根据元素内容删除元素: 集合名.delete('要删除的元素')
清空集合: 集合名.clear( )
判断是否拥有指定的元素: 集合名.has('要判断的元素')
集合的长度: 集合名.size
set构造函数里面允许传入一个数组 构建一个set集合
set集合可以给数组去重 也可以给字符串去重
向set集合里面加入值的时候 不会发生类型转换
set集合判断两个元素是否相等 使用的规则类似于全等(===)
06 Map集合的使用
js中的对象 是键值对的结构
对象的属性名只能是字符串或者symbol
Map集合是键值对结构 根据键存储值 根据键取值
Map的键可以是任意类型 也可以是对象类型的
Map集合的方法:
增加元素:集合.set('键','值')
删除元素:集合.delete(键)
修改元素:集合.set('键','新值')
根据键获取值:集合.get(键')
判断是否有指定的键:集合.has('键')
清空集合:集合.clear()
集合的长度: 集合.size
Map构造函数中可以传入一个二维数组 构建一个map集合
07 Set集合和Map集合的遍历方式
set集合的遍历:
Set.prototype.keys(): 返回键名的遍历器
Set.prototype.values(): 返回键值的遍历器
Set.prototype.entries():返回键值对的遍历器
Set.prototype.forEach():使用回调函数遍历每个成员
Map集合的遍历:
Map.prototype.keys():返回键名的遍历器。
Map.prototype.values():返回键值的遍历器。
Map.prototype.entries():返回所有成员的遍历器。
Map.prototype.forEach():遍历 Map 的所有成员。
08 iterator迭代器
for in循环 是for循环的简化写法
主要是针对带有索引值的数据结构进行遍历 例如: 数组 对象
set集合和map集合 无法使用for in循环遍历
所以es6推出了一种迭代器遍历方法
可以遍历很多不同结构的数据类型
具有默认的迭代器功能的数据结构 Array Map Set String 函数里面的argument
使用方式:
let 迭代器对象=数据结构[symbol.iterator]()
通过哪个数据结构获取的迭代器对象 就是遍历哪个数据结构
迭代器对象有一个方法:
next( ) 返回下一个元素对象相关的数据
有两个属性: value 下一个元素的值 done 表示是否还有元素
当value为undefined done为true的时候 表示遍历到没有元素可以遍历的情况了