ES2017指南

ECMAScript是JavaScript的基礎標準,通常縮寫為ES。了解有關ECMAScript的所有內容,以及ES2017(也稱為ES8)中加入的功能。 字串填充 Object.values() Object.entries() getOwnPropertyDescriptors() 這有什麼用處? 尾部逗號 Async函式 它們的好處 快速示例 連續使用多個Async函式 共享內存和原子操作 ECMAScript 2017是ECMA-262標準的第8版(也常簡稱為ES2017或ES8),於2017年6月定案。 與ES6相比,ES8針對JavaScript來說是一個很小的更新,但它仍然引入了非常有用的功能: 字串填充 Object.values() Object.entries() Object.getOwnPropertyDescriptors() 函式參數列表和呼叫中的尾部逗號 Async函式 共享內存和原子操作 字串填充 字串填充的目的是將字符添加到字串中,使其達到特定長度。 ES2017引入了兩個String方法:padStart()和padEnd()。 padStart(targetLength [, padString]) padEnd(targetLength [, padString]) 範例用法: padStart() ‘test’.padStart(4) ‘test’ ‘test’.padStart(5) ’ test’ ‘test’.padStart(8) ’ test’ ‘test’.padStart(8, ‘abcd’) ‘abcdtest’ padEnd() ‘test’.padEnd(4) ‘test’ ‘test’.padEnd(5) ‘test ’ ‘test’.padEnd(8) ‘test ’ ‘test’.padEnd(8, ‘abcd’) ‘testabcd’ Object.values() 此方法返回包含所有對象自有屬性值的陣列。 用法: const person = { name: 'Fred', age: 87 } Object.values(person) // ['Fred', 87] Object....

Object getOwnPropertyDescriptors()方法

了解JavaScript Object对象的getOwnPropertyDescriptors()方法 此方法返回对象的所有自有(非继承)属性描述符。 Object.getOwnPropertyDescriptors(obj)接受一个对象,并返回一个提供属性描述符列表的新对象。 示例: const dog = {} Object.defineProperties(dog, { breed: { value: 'Siberian Husky' } }) Object.getOwnPropertyDescriptors(dog) /\* { breed: { value: 'Siberian Husky', writable: false, enumerable: false, configurable: false } } \*/ 有一个使用场景可以非常有用。ES2015给我们提供了Object.assign(),它可以复制一个或多个对象的所有可枚举自有属性,并返回一个新对象。但是它存在一个问题,就是它无法正确复制具有非默认属性的属性。 例如,如果一个对象只有一个setter,使用Object.assign()无法正确复制到新对象中。例如: const person1 = { set name(newName) { console.log(newName) } } 这个复制尝试将不起作用: const person2 = {} Object.assign(person2, person1) 但这个可以正常工作,并正确复制setter: const person3 = {} Object.defineProperties(person3, Object.getOwnPropertyDescriptors(person1)) 可以通过控制台测试看到: person1.name = 'x' "x" person2.name = 'x' person3.name = 'x' "x" person2不包含setter,它没有被复制过来。...