ES2017(ES8)新特性
ES2017(ES8)新增了以下特性👇:
Async functions
Object.entries
Object.values
Object.getOwnPropertyDescriptors
Trailing commas
String.prototype.padStart
String.prototype.padEnd
1、 Async functions 异步函数
Async functions
是 async
声明的函数,async
函数是 AsyncFunction
构造函数的实例,其中允许使用 await
关键字,返回的是一个Promise
。
1.1 语法
| async function name([param[, param1[, ...param2]]]) { |
| |
| return new Promise((resolve, reject) => {}); |
| } |
1.2 案例演示
| const promise = () => { |
| console.log("1"); |
| return new Promise((resolve, reject) => { |
| resolve("2"); |
| }); |
| }; |
| |
| const asyncFun = async () => { |
| console.log("3"); |
| const test = await promise(); |
| console.log("4", test); |
| }; |
| |
| asyncFun(); |
| |
| |
| |
| |
| |
2、Object.entries 获取对象可枚举属性
Object.entries()
方法返回一个给定对象自身可枚举属性的键值对数组。
⚠️注意:返回的是属性对应值的键值对数组!
2.1 语法
2.2 案例演示
| let obj = {a:'王',b:'东',c:'李'}; |
| console.log(Object.entries(obj)); |
| |
| |
| for (const [key, value] of Object.entries(obj)) { |
| console.log(key, value); |
| } |
| |
| |
| |
3、Object.values 获取对象可枚举属性值
Object.values()
返回一个给定对象自身可枚举属性值的数组。
3.1 语法
3.1 案例演示
| let obj = {a:'王',b:'东',c:'李'}; |
| console.log(Object.values(obj)); |
| |
4、Object.getOwnPropertyDescriptors 对象的所有自身属性的描述符
Object.getOwnPropertyDescriptors()
方法用来获取一个对象的所有自身属性的描述符。
4.1 语法
| Object.getOwnPropertyDescriptors() |
4.2 案例演示
| let obj = { a: "王", b: "东", c: "李" }; |
| console.log(Object.getOwnPropertyDescriptors(obj)); |
| |
| |
| |
| |
| |
| |
| |
| let p1={ |
| name:"John", |
| get FullName(){ |
| return this.name; |
| } |
| } |
| let p2 = Object.assign({},p1); |
| p2.name="Maria"; |
| console.log(p1.FullName); |
| console.log(p2.FullName); |
| |
| |
| const descriptors = Object.getOwnPropertyDescriptors(p1); |
| let p3 = Object.defineProperties({}, descriptors); |
| p3.name = "Tom"; |
| console.log(p3.FullName); |
5、Trailing commas 尾后逗号
如果你想要添加新的属性,并且在上一行已经使用了尾后逗号,你可以仅仅添加新的一行,而不需要修改上一行。
⚠️注意: JSON 不允许尾后逗号!
6、String.prototype.padStart 向前补充字符串
String.prototype.padStart()
方法用另一个字符串填充当前字符串,在原字符串开头填充指定的填充字符串直到目标长度所形成的新字符串。
6.1 语法
| |
| String.padStart(targetLength); |
| |
| String.padStart(targetLength, padString); |
6.2 案例演示
| let str = "12345"; |
| console.log(str.padStart(10)); |
| console.log(str.padStart(10, "a")); |
7、String.prototype.padEnd 向后补充字符串
String.prototype.padEnd()
方法用一个字符串填充当后字符串(如果需要的话则重复填充),返回在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串。
7.1 语法
| |
| str.padEnd(targetLength); |
| |
| str.padEnd(targetLength, padString); |
7.2 案例演示
| let str = "12345"; |
| console.log(str.padEnd(10)); |
| console.log(str.padEnd(10, "a")); |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步