前言
ECMAScript2017发布于2017年的6月份,本文主要是介绍ECMAScript 2017 新增的语言特性,
主要有以下三个方面的Object ,String ,function
1.Object. values
let obj2 = {
name: "loki",
age: 20,
sex: "female"
};
console.log(Object.values(obj2));
//返回包含值的数组
result =>[ 'loki', 20, 'female' ]
2.Object. entries
以数组形式返回对象中的键值对
let obj2 = {
name: "loki",
age: 20,
sex: "female"
};
log(Object.entries(obj2));
//返回包含键值对的数组
result =>[ [ 'name', 'loki' ], [ 'age', 20 ], [ 'sex', 'female' ] ]
这样的话可以直接通过 forof方式直接遍历对象了
for (const [key, value] of Object.entries(obj2)) {
log(key, value);
}
result => name loki
result => age 20
Map(3) { 'name' => 'loki', 'age' => 20, 'sex' => 'female' }sex female
由于map就是需要这种格式的数据我们可以把对象直接转换成map
log(new Map(Object.entries(obj2)));
result => Map(3) { 'name' => 'loki', 'age' => 20, 'sex' => 'female' }
3.Object.getOwnProperyDescriptors
获取对象的完整描述信息,演示如下
const obj = {
firstName: "handsome",
lastName: "Wang",
age: 23,
get name() {
return `${this.firstName} ${this.lastName}`;
},
};
// 直接复制上面的对象, getter属性会变成普通属性复制过来
const obj2 = Object.assign({}, obj);
obj2.firstName = "snoopy";
console.log(obj2.name); // Bruski Wang :这里已经变成普通属性, 还记录着上一个对象的值
// 应该使用 Object.getOwnPropertyDescriptors 拿到属性完整描述, 再 defineProperties
const descriptors = Object.getOwnPropertyDescriptors(obj);
console.log(descriptors);
const obj3 = Object.defineProperties({}, descriptors);
obj3.firstName = "Loki";
console.log(obj3.name); // Loki Wang
String.property.padStart / String.property.padEnd
参数 (count, str)
用指定的字符填充到指定字符数,常用于输出格式化
const books = {
html: 5,
css: 16,
javascript: 128,
};
for (const [name, count] of Object.entries(books)) {
const padName = name.padEnd(16, "-"); // 尾部填充中划线
const padCount = count.toString().padStart(3, 0); // 补充前导0
// => html------------ 005
// => css------------- 016
// => javascript------ 128
console.log(padName, padCount);
}
允许函数最后一个参数带逗号
减少 git diff,便于调整参数顺序
const add = (params1, params2, ) => {
return params1 + params2
};
log(add(10, 20))
//result => 30
谢谢观看,如有不足,敬请指教