开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第30天
ES8新增特性
Object.keys和Object.values方法
ES8中,为我们新增了Object.keys和Object.values两个方法
当传入对象时,便可返回包含对应key及value的数组,例如👇
let obj = {
name: '何小幸',
age: 18
}
console.log(Object.keys(obj));
console.log(Object.values(obj))
输出:
['name', 'age']
['何小幸', 18]
当传入数组时👇
Object.values([1,2,3,4]);//会原封不动将数组返回
Object.keys([1,2,3,4]);//会将其内元素转换为字符串再返回:['0', '1', '2', '3']
当传入字符串时👇
Object.values("abc");//会将其拆分并组成数组:['a', 'b', 'c']
Object.keys(“abc);//报错,不能传入字符串
Object.entries方法
Object.entries方法可以获取到一个数组,数组中会存放可枚举属性的键值对数组
传入对象时,数组中就是:[[键,值], [键,值], [键,值]]这样的形式👇
let obj = {
name: '何小幸',
age: 18
}
console.log(Object.entries(obj));//输出[['name', '何小幸'], ['age', 18]]
传入数组时,生成以索引值为键,后跟值的形式:[[0, 值], [1, 值], [2, 值]]
console.log(Object.entries(['a', 'b', 'c']));//输出[['0', 'a'], ['1', 'b'], ['2', 'c']]
padStart和padEnd方法
某些字符我们需要对其进行前后的填充,来实现某种格式化的效果,ES8中就为我们增加了padStart和padEnd方法,可以分别对我们的字符串首尾进行填充。
如何填充呢?
比如:
let hello = "world";
console.log(hello.padStart(15));
如上代码就会输出: world,world的前方被以空格进行填充,我们可以通过第二个参数来指定要填充的内容:
console.log(hello.padStart(15,"6"));
这样填充后的字符串就变成了:6666666666world
同理,padEnd方法与padStart用法相同,区别只在填充位置
Trailing-Commas
ES8新增的Trailing-Commas特性,可以支持我们在定义及调用方法时多写一个逗号而不会报错:
function fn(a, b,){
//...
}
fn(1, 2,)
Object.getOwnPropertyDescriptors
该方法可以帮助我们获取对象中的所有属性描述符
let obj = {
name: '何小幸',
age: 18
}
console.log(Object.getOwnPropertyDescriptors(obj))
输出:
{name: {…}, age: {…}}
age: {value: 18, writable: true, enumerable: true, configurable: true}
name: {value: '何小幸', writable: true, enumerable: true, configurable: true}
[[Prototype]]: Object
async和await
async用来声明一个异步函数,await操作符用于等待一个Promise兑现并获取它兑现之后的值。
function foo(a) {
return new Promise(resolve => {
setTimeout(() => {
resolve(a);
}, 1000);
});
}
async function bar() {
let a = await foo(20);
console.log(a); // 等待1秒后输出,20
}
bar();