ES2022与ES2023特性一览
2024/04更新:将ES2023标准特性补充完整
ECMAScript 2022 标准
class fields
类相关特性的集合
private instance methods and accessors
私有实例方法和访问器
1 | class People { |
private Instance Fields
私有实例字段
1 | class People { |
public Instance Fields
公有实例字段
1 | // before |
static class fields and methods
静态类字段和方法
1 | class People { |
private static fields and methods
私有静态字段和方法
1 | class People { |
RegExp Match Indices
正则匹配,新增/d
修饰符,exec 方法返回的结果数组就会多出一个indices
属性,用来返回匹配结果的开始索引和结束索引。
1 | const str = "foo-bar-foo"; |
class static block
类里面的静态区块
1 | class { |
Top-level await
顶级区块使用 await
1 | async function getData() { |
Ergonomic brand checks for Private Fields
检测实例的类中是否含有私有属性
1 | class People { |
hasOwn
Object
新增hasOwn
方法替换原有的hasOwnProperty
,判断某个属性是对象本身的属性,还是原型链上的属性,Object.hasOwn()
方法是比 Object.prototype.hasOwnProperty()
方法更加 便捷
和 安全
的策略。当 Object.create(null)
创建一个不继承自 Object.prototype
的对象,使 hasOwnProperty
方法无法访问。
1 | let object = { foo: false }; |
at
数组新增at
方法
1 | const array = [1, 2, 3, 4]; |
Error Cause
Error
构造函数新增一个cause
附加参数
1 | try { |
ECMAScript 2023 标准
findLast 和 findLastIndex
数组新增两个查找方法
findLast
从后往前查找符合要求的数据findLastIndex
从后往前查找符合要求的数据的 Index
1 | const array = [{ value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }]; |
Hashbang 语法
在文件头加入Hashbang #!/usr/bin/env node
,你可以在命令行中直接键入./hello.js
运行以下脚本(脚本文件名:hello.js
),而无需使用node ./hello.js
:
1 |
|
Symbols as WeakMap keys
扩展了WeakMap
,允许使用Symbol
作为key
1 | const weak = new WeakMap(); |
Change Array by copy
提供一些通过复制的方式(不直接修改原数组)更改数组的方法
toReversed()
数组反转方法,reverse
的复制版本,区别在于toReversed
会返回一个新的数组,原数组不会改变
1 | // 原来的方式 |
toSorted(compareFn)
数组排序方法,sort
的复制版本,区别在于toSorted
会返回一个新的数组,原数组不会改变
1 | const outOfOrder = [3, 1, 2]; |
toSpliced(start, deleteCount, ...items)
就地移除或者替换已存在的元素和/或添加新的元素,splice
的复制版本,区别在于toSpliced
会返回一个新的数组,原数组不会改变
1 | const months = ["Jan", "Mar", "Apr", "May"]; |
with(index, value)
with()
通过返回一个指定索引处的值被新值替换的新数组,来改变数组中指定索引处的值,原数组不会被修改。
1 | const correctionNeeded = [1, 1, 3]; |
参考
— END —