ECMAScript2017(es8)新特性

ECMAScript2017es8)新特性。

padStartpadEnd

这两个函数顾名思义,就是往头部和尾部填充东西的,可以来个例子理解下(以padStart为例子)。

1
2
3
4
5
let a = 'nick';
a.padStart(10,"123"); // 输出 '123123nick'
a.padStart(10); // 输出 ' nick'
a.padStart(1) // 输出 'nick'
a.padStart(5,'123') // 输出 '1nick'

默认使用空格填充,第一个参数是指填充完字符串的长度,而不是填充串的长度。

如果第一个参数小于了原字符串的长度,那么直接返回原字符串。

Object.valuesObject.entries

之前如果需要遍历对象的属性的话,一般是用es5Object.keys来获取对象的键数组,再根据键数组来遍历对象。

1
2
var o = {a: 1, b: 2};
var keys = Object.keys(o); // keys = ['a','b'];

而现在可以直接拿到对象的值数组。

1
2
var o = {a: 1, b: 2};
var values = Object.values(o); // values = [1, 2]

当然也可以用keys方法来实现这个操作。

1
var values = Object.keys(o).map(key => o[key]);

也可以直接拿到对象的键值对数组了。

1
2
var o = {a: 1, b: 2};
var entries = Object.entries(o); // entries = [['a', 1], ['b', 2]]

依然可以用keys来实现这个操作。

1
var entries = Object.entries(o).map(key => [key, o[key]]);

map天下第一!!!)

总体上是趋于直接性和易读性的一个特性。

Object.getOwnPropertyDescriptors

获取当前对象自身的属性描述符的数组,不包括原型链上的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var o = {name: 'Dedicatus545', age: 22};
Object.getPrototypeOf(o).myProperty = 'property in prototype'
var descriptors = Object.getOwnPropertyDescriptors(o);
// 输出 (不包括myProperty属性的描述符对象)
// {
// name: {
// value: 'Dedicatus545',
// writable: true,
// enumerable: true,
// configurable: true
// },
// age: {
// value: 22,
// writable: true,
// enumerable: true,
// configurable: true
// }
// }