JS进阶 | ES8知识点解析

762 阅读2分钟

「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战

JS进阶系列文章

ES8语法

ES8又称ES2017,在ES6之后的语法我们都统称为ES6+,下面我们来看看ES8中新增的新语法。它们都是一些非常实用的功能:

  • Object.values
  • Object.entries
  • 字符串填充
  • 函数参数的逗号
  • Object.getOwnPropertyDescriptors
  • async function

Object values

该方法可以获取对象中所有的value值。

const obj = {
  name: "_island",
  age: 18
};

console.log(Object.values(obj)); // [ '_island', 18 ]

Object entries

该方法用于将一个对象的可枚举健值转换为一个数组。方便后续遍历数据。

const obj = {
  name: "_island",
  age: 18
};

// 将一个对象转为一个数组,方便后续遍历
console.log(Object.entries(obj)); // [ [ 'name', '_island' ], [ 'age', 18 ] ]

字符串填充

padStart

padStart方法用于从起始开始补全字符串。返回补全之后的字符串,不会修改原字符串。

const str4 = "100";
console.log(str4.padStart(6, "000")); // 000100
padEnd

endsWith方法用于从尾部补全字符串。返回补全之后的字符串,不会修改原字符串。

const str5 = "200";
console.log(str5.padEnd(6, "000")); // 200000

padStart / padEnd 如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串。

函数参数的逗号

ES8之后,可以在函数的参数后面尾随逗号。

function foo(m,n,){

}

foo(20,30,)

Object getOwnPropertyDescriptors

该方法用来获取一个对象的所有自身属性的描述符。

返回是描述符的有以下子集的组成:

属性说明
value属性值
writable该属性是否可写
configurable该属性是否可配置(是否可读写、删除该属性)
enumerable该属性是否可枚举
set设置属性时调用的函数
get获取属性时调用的函数
const obj = {
  name: "_island"
};
console.log(Object.getOwnPropertyDescriptors(obj));

// {
//   name: {
//     value: '_island',
//     writable: true,
//     enumerable: true,
//     configurable: true
//   }
// }

async function

async函数是一个异步函数,且可以搭配await关键字使用。它可以使Promise的异步执行的像同步代码一样执行。

async函数一定会返回一个promise对象,如果一个async函数的返回值看起来不是promise,那么它将会被隐式地包装在一个promise中。

async function foo() {
  const res = await new Promise((res) => {
    setTimeout(() => res("ok"), 2000);
  });
  console.log(res);
}

foo(); // ok