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

相关文章
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
TsingtaoAI亮相2025青岛西海岸科技成果对接会,以具身智能实训赋能AI人才培养
3月26日青岛——由青岛市科学技术局指导、青岛西海岸新区管委联合上海技术交易所等多家机构主办的“2025青岛西海岸新区科技成果对接会”在青岛金沙滩蓝海御华酒店盛大启幕。青岛市委常委,西海岸新区工委书记、区委书记孙永红,青岛市科学技术局副局长张栋华和上海技术交易所总裁颜明峰等参加会议并致辞。TsingtaoAI受邀参会并发表主题分享,公司负责人汶生以《基于DeepSeek的具身智能实训》为题,向与会嘉宾展示了AI具身智能技术如何突破传统边界,助力AI人才从实验室走向产业一线。
129 1
|
12月前
|
传感器 人工智能 物联网
柔性电子技术:可穿戴设备与智能生活的未来
【9月更文挑战第14天】柔性电子技术作为一种新兴且充满潜力的技术,正逐步成为连接可穿戴设备与智能生活的桥梁。它以其独特的灵活性和适应性,为我们的生活带来了更多的可能性和便捷性。尽管目前仍面临诸多挑战,但随着科技的不断进步和创新的推动,柔性电子技术必将迎来更加美好的未来。
【Python 基础】如何将一个字符串转化为全大写和全小写?
【5月更文挑战第8天】【Python 基础】如何将一个字符串转化为全大写和全小写?
|
Java 关系型数据库 数据库连接
Spring Boot 学习研究笔记(八) - Spring Data JPA与Hibernate区别及配置(2)
Spring Boot 学习研究笔记(八) - Spring Data JPA与Hibernate区别及配置
603 0
|
存储 Prometheus 运维
使用 Prometheus 为 Flink 搭建可观测体系
使用 Prometheus 为 Flink 搭建可观测体系
761 0
使用 Prometheus 为 Flink 搭建可观测体系
|
前端开发 JavaScript PHP
fastadmin框架自带的数据效验
fastadmin框架自带的数据效验
531 0
|
JSON 算法 前端开发
什么是JWT?深入理解JWT从原理到应用(上)
什么是JWT?深入理解JWT从原理到应用(上)
2781 0
|
XML Web App开发 JSON
手把手教你实现一次 CSRF 攻击
之前写过一篇 CSRF 攻击文章,介绍了定义、触发方式、防御方式,但唯独没有给出一个实现方式,今天就借这篇文章重新写出一个实现方式
|
自然语言处理 算法 Java
Java代码工具之中英文语句分词
中文语句分词支持的分词算法包括Lucene、Ansj、corenlp、HanLP、IKAnalyzer、Jcseg、Jieba、mmseg4j、MYNLP、Word等10种;英文语句分词支持的分词算法包括IKAnalysis、StanfordNlp等两种主流算法。
656 0
Java代码工具之中英文语句分词
|
数据安全/隐私保护 Android开发
android11.0(R) data分区节点加密控制分析
android11.0(R) data分区节点加密控制分析
980 0

热门文章

最新文章