「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战」
JS进阶系列文章
ES8语法
ES8又称ES2017,在ES6之后的语法我们都统称为ES6+,下面我们来看看ES8中新增的新语法。它们都是一些非常实用的功能:
Object.valuesObject.entries- 字符串填充
- 函数参数的逗号
Object.getOwnPropertyDescriptorsasync 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