ECMAScript2017(ES8)新特性
# 概述
ECMAScript2017于2017年6月正式发布, 本文会介绍ECMAScript2017(ES8),即ECMAScript的第8个版本的新特性。
以下摘自官网:ecma-262 (opens new window)
ECMAScript 2017 introduced Async Functions, Shared Memory, and Atomics along with smaller language and library enhancements, bug fixes, and editorial updates. Async functions improve the asynchronous programming experience by providing syntax for promise-returning functions. Shared Memory and Atomics introduce a new memory model that allows multi-agent programs to communicate using atomic operations that ensure a well-defined execution order even on parallel CPUs. It also included new static methods on Object: Object.values, Object.entries, and Object.getOwnPropertyDescriptors.
# ECMAScript2017(ES8)
ES8 新增了一些新特性,比如:
Object.values
:返回对象所有属性值value
的数组Object.entries
:返回对象所有属性键值对[key,value]
的数组Object.getOwnPropertyDescriptors
:返回对象所有属性的描述符String.prototype.padStart
和String.prototype.padEnd
:用于字符串补全async/await
:异步编程的新方式SharedArrayBuffer
:共享内存的新方式Atomics
:原子操作的新方式
# Object
方面
Object.values
和Object.entries
中返回的数组顺序都是以与for in
循环所提供顺序相同,
# 浏览器兼容性


Object.getOwnPropertyDescriptors
方法会返回指定对象的所有属性描述符,对象自身的属性描述符是直接在对象上定义的,不会从对象的原型继承。
# 浏览器兼容性

# String
方面
padStart
和padEnd
方法用于从前或从后补全字符串,会返回补全后的新字符串,不会改变原字符串。其语法如下:
padStart(targetLength, padString)
padEnd(targetLength, padString)
2
targetLength
:
- 目标长度,即补全后的字符串长度
- 如果目标长度小于等于当前字符串长度,返回当前字符串
padString
:
- 补全字符串,默认使用空格补全
- 如果
padString
长度大于目标长度,会截取超出部分
# 浏览器兼容性

# async
和await
async
和await
就是异步编程的语法糖,可以使异步代码看起来像同步代码一样。
# 浏览器兼容性


# SharedArrayBuffer
对象
SharedArrayBuffer
是一种新的内存模型,用于在多个线程之间共享内存。该模型通常用来表示一个通用的,固定长度的原始二进制数据缓冲区,但是其不能被分离。
# 浏览器兼容性

# Atomics
对象
共享内存能被同时创建和更新于工作线程或主线程。
Atomics
对象提供了一组静态方法,用于在SharedArrayBuffer
对象上执行原子操作。Atomics
对象不是构造函数,因此不能使用new
运算符,也不能当做函数直接调用。其所有属性和方法都是静态的,类似与Math
对象。
# 浏览器兼容性
