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,);