ES6回顾

396 阅读2分钟

promise

  • promise.all,关键步骤,map(p => p.catch(e => e)) 在每个请求后加上 catch 捕获错误,确保promise能正常执行走到.then中
  • promise.race的用法:谁跑的快,以谁为准执行回调。

race的使用场景:

比如我们可以用race给某个异步请求设置超时时间,并且在超时后执行相应的操作,代码如下:如果5秒钟图片还未成功返回,那么timeout就跑赢了,则进入catch,报出“图片请求超时”的信息。

迭代器(Iterator)

  它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。

for...of...

遍历 Array 可以采用下标循环,遍历 Map 和 Set 就无法使用下标。为了统一集合类型,ES6 标准引入了新的 iterable 类型,Array、Map 和 Set 都属于 iterable 类型。

具有 iterable 类型的集合可以通过新的 for ... of 循环来遍历,但是不能遍历对象,因为没有迭代器对象,与forEach()不同的是,它可以正确响应break、continue和return语句 for of遍历的只是数组内的元素,而不包括数组的原型属性method和索引

for...in...

for in更适合遍历对象,会遍历对象所有的可枚举属性,包括原型,尽量不要使用for in遍历数组。Object.keys()只会遍历对象的可枚举属性

proxy

定义:对外界的访问进行过滤和改写。 get(target, propKey, receiver):拦截对象属性的读取,receiver-接收者,也就是当前的proxy实例

set(target, propKey, value, receiver):拦截对象属性的设置

apply(target, object, args):拦截 Proxy 实例作为函数调用的操作,比如proxy(…args)、

proxy.call(object, …args)proxy.apply(…)

Set数据类型

 数学上的集合,类似数组。但是集合中元素都是唯一的,没有重复的值。通常用来数组去重

Set let set = new Set(类数组);

构造函数接收一个类数组元素(例如,字符串,HTMLCollection,NodeList)当作参数,用来初始化 Set 对象

size:表示集合中的元素个数

add(value):添加元素,如果已经存在则不会添加

clear() 清空一个 set 对象中的所有元素,并返回 undefined

delete(value) 方法可以从一个 Set 对象中删除指定的元素。参数 value 是要删除的值。成功删除返回 true,否则返回 false。

Map数据类型

普通对象的键只能是字符串,如果不是字符串也会被转换成字符串,Map数据类型的键可以是任何数据类型

set(key,value) ,添加key-value

has(key),判断是否存在key

get(key),获取对应key的值

delete(key), 删除对应的key以及value