一、Set和WeakSet
set结构的键名和键值是同一个值。
1、创建Set
2、Set的参数必须是可遍历的对象:数组,伪数组,字符串,set,map
3、方法
1、add()使用 add方法添加成员
数组去重:
var arr = [1,2,3,4,5,1,1]
var set = new Set(arr)
console.log([...set ])
2、size属性:获取成员个数
3、delete()方法:用户删除Set机构中的指定值,删除成功返回:true,删除失败返回:false。
4、clear()方法:清除所有成员。
5、has()方法:判断set结构
6、entries()方法:
7、
8、
4、WeakSet()结构同样不会存储重复的值,不同的是,它的成员必须是引用类型的值
二、Map和WeakMap用法
键名可以是任何数据类型
1、创建
1、set()方法的作用:给实例设置一对键值对,返回map实例
2、get()方法的作用:获取指定键名的键值,返回键值
3、delete()方法的作用:删除指定的键值对,删除成功返回:true,否则返回:false
4、clear()
5、has()
6、entries()
7、keys和values
8、forEach
9、size
Weakmap
WeakMap结构的键名必须是引用类型的值,也是它和Map最大不同之处
介绍下 Set、Map的区别?
1、Map是键值对,Set是值的集合
2、Map可以通过get方法获取值,而set不能,因为它只有值
3、都能通过迭代器进行for……of遍历
4、Set的值是唯一的可以做数组的去重,Map由于没有格式限制,可以做数据存储
5、map和set都是stl中的关联容器,map以键值对的形式存储,key=value组成pair,是一组映射关系。set只有值,可以认为只有一个数据,并且set中元素不可以重复且自动排序
三、ES6的Promise对象
1、Promise设计初衷
(1)、解决回调地狱(回调函数的层层嵌套)
(2)、异步操作
2、异步操作
(1)、定时器
(2)、事件
(3)、Ajax请求
(4)、generator函数(生成器函数)
(5)、promise (.then .catch方法是异步的)
(6)、async/await
3、回调地狱:回调函数的层层嵌套
4、Promise:(重点)
(1)、创建:new Promise(function(resolve , reject){})
resolve :成功 reject:失败
初始状态:pending 成功状态:fulfilled 失败状态:rejected
初始状态=>成功状态 初始状态=>失败状态 (不可逆转)
(2)、执行:
promise对象.then(function(res){}) 成功
第一个then方法里面的参数是resolve方法里面的参数
下一个then方法里面的参数是第一个then的返回值
promise对象.catch(function(res){}) 失败
四、ES7中 的Async/await
async用于申明一个function是异步的,返回一个promise对象,而await可以认为是async wait的简写,等待一个异步方法执行完成。async必须声明的是一个function,await必须在声明的函数内部使用。