ES2017(ES8)新特性

ES2017提供的新特性:

 

1.Async 函数呈现更清晰的 Promise 语法

Async 函数也就是我们常说的Async/Await,是一种用于处理JS异步回调的语法糖,可以帮助我们摆脱回调地狱。

login(userName) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('1001');
        }, 600);
    });
}

getData(userId) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if (userId === '1001') {
                resolve('Success');
            } else {
                reject('Fail');
            }
        }, 600);
    });
}

// 不使用async/await ES7
doLogin(userName) {
    this.login(userName)
        .then(this.getData)
        .then(result => {
            console.log(result)
        })
}

// 使用async/await ES8
async doLogin2(userName) {
    const userId=await this.login(userName);
    const result=await this.getData(userId);
}

this.doLogin()// Success
this.doLogin2()// Success

2.使用Object.values()遍历对象的属性值,无需使用使用属性名:

let obj = {a: 1, b: 2, c: 3}

Object.values(obj).forEach(value =>{ console.log(value); // 输出1, 2, 3})

 

3.使用Object.entries()遍历对象的属性名和属性值:

let obj = {a: 1, b: 2, c: 3}; 
Object.entries(obj).forEach(([key, value]) =>{   
 console.log(key + ": " + value); // 输出a: 1, b: 2, c: 3
})

4.Object.getOwnPropertyDescriptors() 方法用来获取一个对象的所有自身属性的描述符。

Object.create(
  Object.getPrototypeOf(obj), 
  Object.getOwnPropertyDescriptors(obj) 
);

5.padStart()方法用另一个字符串填充当前字符串(如果需要,多次),直到结果字符串达到给定长度。填充从当前字符串的开头(左侧)开始应用。

const str1 = '5';

console.log(str1.padStart(2, '0'));
// expected output: "05"

const fullNumber = '2034399002125581';
const last4Digits = fullNumber.slice(-4);
const maskedNumber = last4Digits.padStart(fullNumber.length, '*');

console.log(maskedNumber);
// expected output: "************5581"

padEnd()  方法会用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串。从当前字符串的末尾(右侧)开始填充。

'abc'.padEnd(10);          // "abc       "
'abc'.padEnd(10, "foo");   // "abcfoofoof"
'abc'.padEnd(6, "123456"); // "abc123"
'abc'.padEnd(1);           // "abc"

 

6.结尾逗号,数组定义和函数参数列表

var f = function(a, 
 b, 
 c, 
 d, // d之后允许带逗号
) { 
  console.log(d)}

7.ShareArrayBufferAtomics用于从共享内存位置读取和写入

SharedArrayBuffer 对象用来表示一个通用的,固定长度的原始二进制数据缓冲区,类似于 ArrayBuffer 对象,它们都可以用来在共享内存(shared memory)上创建视图。与 ArrayBuffer 不同的是,SharedArrayBuffer 不能被分离。

语法

new SharedArrayBuffer(length)

参数

length:所创建的数组缓冲区的大小,以字节(byte)为单位。

返回值

一个大小指定的新 SharedArrayBuffer 对象。其内容被初始化为 0。

let sab = new SharedArrayBuffer(1024);
worker.postMessage(sab);

 

Atomics 对象提供了一组静态方法用来对 SharedArrayBuffer 对象进行原子操作。

这些原子操作属于 Atomics 模块。与一般的全局对象不同,Atomics 不是构造函数,因此不能使用 new 操作符调用,也不能将其当作函数直接调用。Atomics 的所有属性和方法都是静态的(与 Math  对象一样)。

属性

Atomics[Symbol.toStringTag]

该属性的值为“Atomics”。

 

更多ES2017特性,见What's New in ES2017

 

 

copyright 少年广坤的烦恼

 

你可能感兴趣的:(ES2017(ES8)新特性)