ECMAScript 2017(ES8) 的新特性总结

简介: ECMAScript 2017(ES8) 的新特性总结

image.png

快速通道:

老样子,先纵览下 ES2018 的新功能:

async/await: 异步终极解决方案

Object.values()

Object.entries()

String padding:String.prototype.padStart、String.prototype.padEnd

函数参数列表结尾允许逗号

Object.getOwnPropertyDescriptors(): 获取一个对象的所有自身属性的描述符,如果没有任何自身属性,则返回空对象

SharedArrayBuffer 对象:用来表示一个通用的,固定长度的原始二进制数据缓冲区

Atomics 对象:提供了一组静态方法用来对 SharedArrayBuffer 对象进行原子操作

async/await

image.png

async fetchData(query) =>{  
  try {      
    const response = await axios.get(`/query?query=${query}`); 
    const data = response.data;     
    return data;    
 }catch (error)    {      
   console.log(error)   
 }} 
fetchData(query).then(data =>{    
     this.processfetchedData(data)
})

Object.values()image.png

假设我们要遍历如下对象obj的所有值

const obj = {a: 1, b: 2, c: 3};
// ES7
const vals=Object.keys(obj).map(key=>obj[key]);
console.log(vals);//[1, 2, 3]
// ES8
const values=Object.values(obj1);
console.log(values);//[1, 2, 3]

Object.values()省去了遍历key,并根据这些key获取value的步骤。

Object.entries()

image.png

假设我们要遍历如下对象obj对象的所有属性的key和value:

// ES7
Object.keys(obj).forEach(key=>{
    console.log('key:'+key+' value:'+obj[key]);
})
// ES8
for(let [key,value] of Object.entries(obj1)){
    console.log(`key: ${key} value:${value}`)
}

String padding:String.prototype.padStart、String.prototype.padEndimage.png

String.padStart(targetLength,[padString])
console.log('0.0'.padStart(4,'10')) //10.0
console.log('0.0'.padStart(20))// 0.00   
  • targetLength:当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
  • padString:(可选)填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断,此参数的缺省值为 " "。
String.padEnd(targetLength,padString])
console.log('0.0'.padEnd(4,'0')) //0.00    
console.log('0.0'.padEnd(10,'0'))//0.00000000
  • targetLength:当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
  • padString:(可选) 填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断,此参数的缺省值为 " ";

函数参数列表结尾允许逗号

image.png

Object.getOwnPropertyDescriptors()

image.png

const obj = {
  name: 'lxm',
  get age() { return '28' }
};
Object.getOwnPropertyDescriptors(obj)

image.png


SharedArrayBuffer 对象

image.png

/**
 * 
 * @param {*} length 所创建的数组缓冲区的大小,以字节(byte)为单位。  
 * @returns {SharedArrayBuffer} 一个大小指定的新 SharedArrayBuffer 对象。其内容被初始化为 0。
 */
new SharedArrayBuffer(length)

Atomics 对象

image.png

多个共享内存的线程能够同时读写同一位置上的数据。原子操作会确保正在读或写的数据的值是符合预期的,即下一个原子操作一定会在上一个原子操作结束后才会开始,其操作过程不会中断。'

  • Atomics.add()

image.png

  • Atomics.compareExchange()

image.png

  • Atomics.exchange()image.png
  • Atomics.load()

image.png

  • Atomics.or()

image.png

  • Atomics.store()image.png

image.png

wait() 和 wake() 方法采用的是 Linux 上的 futexes 模型(fast user-space mutex,快速用户空间互斥量),可以让进程一直等待直到某个特定的条件为真,主要用于实现阻塞。

image.png

image.png

目录
相关文章
|
5月前
|
前端开发 JavaScript 索引
ECMAScript 2024 新特性
ECMAScript 2024 新特性 ECMAScript 2024,第 15 版,添加了用于调整 ArrayBuffer 和 SharedArrayBuffer 大小和传输的功能; 添加了一个新的 RegExp /v 标志,用于创建具有更高级功能的 RegExp,用于处理字符串集; 并介绍了用于构造 Promise 的 Promise.withResolvers 便捷方法、用于聚合数据的 Object.groupBy 和 Map.groupBy 方法等
89 1
|
JavaScript 前端开发 索引
ECMA 2022 (es13) 新特性
ECMA 2022 (es13) 新特性
67 0
|
存储 JavaScript 前端开发
ECMAScript 2020(ES11)新特性简介
ECMAScript 2020(ES11)新特性简介
123 0
|
存储 前端开发 JavaScript
ECMAScript 6 新特性详解(下)
ECMAScript 6 新特性详解(下)
|
自然语言处理 JavaScript 前端开发
ECMAScript 6 新特性详解(上)
ECMAScript 6 新特性详解(上)
|
存储 JSON JavaScript
ECMAScript 6 新特性详解(中)
ECMAScript 6 新特性详解(中)
|
JavaScript 前端开发 索引
ECMAScript 2022(ES13)初体验
2022 年 6 月 22 日,第 123 届 ECMA 大会批准了 ECMAScript 2022 语言规范,这意味着它现在正式成为标准。下面就来看看 ECMAScript 2022 有哪些新特性!
ECMAScript 2022(ES13)初体验
|
JavaScript 算法 API
ECMAScript 2016(ES7)新特性简介
ECMAScript 2016(ES7)新特性简介
ECMAScript 2016(ES7)新特性简介
|
存储 前端开发 JavaScript
快速掌握es6+新特性及es6核心语法盘点
接下来我会总结一些工作中常用也比较核心的es6+的语法知识,后面又要慢慢开始工作之旅了,希望在总结自己经验的过程中大家会有所收获~
193 0
|
自然语言处理 前端开发 JavaScript
ECMAScript 2021 (ES12)的新特性总结
ECMAScript 2021 (ES12)的新特性总结
166 0
ECMAScript 2021 (ES12)的新特性总结