ES7、ES8新特性

作者:陆金龙    发表时间:2017-09-24 22:52   


引用原文链接:http://www.jianshu.com/p/a138a525c287

 

以下内容为对上述原文的整理和修改:

ES7 includes函数

let demo = [1, NaN, 2, 3]
demo.indexOf(NaN)        //-1
demo.includes(NaN)       //true

ES8 Promise将回调函数的嵌套,改成了链式调用。写法如下:

var promise = new Promise((resolve, reject) => {
  this.login(resolve)
})
.then(() => this.getInfo())
.catch(() => { console.log("Error") })

 

ES8引入了async函数,使得异步操作变得更加方便。

 

async function asyncFunc(params) {

  const result1 = await this.login()
  const result2 = await this.getInfo()
}

 

并行处理多个异步结果:

async function asyncFunc() {

  const [result1, result2] = await Promise.all([
    otherAsyncFunc1(),
    otherAsyncFunc2()
  ]);
  console.log(result1, result2);
}

 

ES8 Object.entries(),可以进行对象属性的遍历


let obj = {a: 1, b: 2, c: 3}
for (let [key, value] of Object.entries(obj))
{ console.log(`${key} is ${value}`) }
// a is 1, b is 2, c is 3
ES8 Object.values() 只返回自己的键值对中属性的值
Object.values({first: 'brown', last: 'tom', nick: 'tom' })    //['brown', 'tom', 'tom']

ES8字符串方法:padStart和padEnd

'king'.padStart(10)   //'      king'
'king'.padStart(10,'.*')   //' .*.*.*king'

Object.getOwnPropertyDescriptors() 返回目标对象中所有属性的属性描述符,不能是从原型链继承来的属性

Object.getOwnPropertyDescriptors方法配合Object.defineProperties方法,就可以实现正确拷贝

 

函数参数列表与调用中的尾部逗号

允许在定义或者调用函数时添加尾部逗号而不报错。如:

let func = function (a,b,c,){
   //logic code
}

func(1,2,3,5,);