-
ES2017引入了两个
String方法:padStart()和padEnd()字符串填充的目的是 向字符串添加字符,使字符串达到指定的长度。
'test'.padStart(8) // ' test'.length === 8 'test'.padStart(8,'abcd') // 'abctest'.length === 8 'test'.padEnd(8) // 'test '.length === 8 -
Object.values()
这个方法返回一个包含所有对象自身属性值的数组。
const person = { name: 'Fred', age: 87 } Object.values(person) // ['Fred', 87]Object.values()也适用于数组:const people = ['Fred', 'Tony'] Object.values(people) // ['Fred', 'Tony'] -
Object.entries()
这个方法返回一个包含所有对象自身属性的数组,作为
[key,value]对的数组。const person = { name: 'Fred', age: 87 } Object.entries(person) // [['name', 'Fred'], ['age', 87]]Object.entries()也适用于数组:const people = ['Fred', 'Tony'] Object.entries(people) // [['0', 'Fred'], ['1', 'Tony']] -
Object.getOwnPropertyDescriptors()
此方法返回对象的所有自有(非继承的)属性描述符。
JavaScript 中的任何对象都有一组属性,每个属性都有一个描述符。
描述符是属性(property) 的一组特性(attributes),它由以下的子集组成:
- value:属性的值
- writable:
true表示改属性可以被修改 - get:属性的 getter 函数,在读取属性时调用
- set:属性的 setter 函数,在属性设置值时调用
- configurable:如果为
false,则不能删除属性,也不能更改任何属性,但值除外 - enumerable:如果属性是可枚举的,则为
true
Object.getOwnPropertyDescriptors(obj)接受一个对象,并返回一个带有描述符集的对象。这个方法有什么用?
ES2015 给我们带来了
Object.assign()方法,它从一个或多个对象复制所有可枚举的属性,并返回一个新对象。但是存在问题,它无法正确复制具有非默认特性(attribute) 的属性 (property)(getter,setter,不可写属性,等)。
如果一个对象只有一个 setter ,则无法使用
Object.assign()正确地复制到一个新对象。例如:
const person1 = { set name(newName) { console.log(newName) } }以下代码将不起作用:
const person2 = {} Object.assign(person2, person1)但下面的代码就会奏效:
const person3 = {} Object.defineProperties(person3, Object.getOwnPropertyDescriptors(person1))使用
Object.create()对浅拷贝对象也有同样的限制 -
参数列表或调用中尾随逗号
此功能允许在函数声明和函数调用中使用尾随逗号:
const doSomething = (var1, var2,) => { //... } doSomething('test2', 'test2',) -
async await
-
共享内存和Atmotics
详情查看另一篇和该小标题同名笔记, 点这里