ES2022与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()
数组反转方法1
2
3
4
5
6
7
8
9
10
11
12
13// 原来的方式
const sequence_origin = [1, 2, 3];
// 数组反转
sequence_origin.reverse(); // => [3, 2, 1]
// 会改变原始数组
sequence_origin; // => [3, 2, 1]
// 现在的方式
const sequence = [1, 2, 3];
// 数组反转
sequence.toReversed(); // => [3, 2, 1]
// 不改变原始数组
sequence; // => [1, 2, 3]toSorted(compareFn)
数组排序方法1
2
3
4const outOfOrder = [3, 1, 2];
outOfOrder.toSorted(); // => [1, 2, 3]
outOfOrder; // => [3, 1, 2]toSpliced(start, deleteCount, ...items)
数组替换方法with(index, value)
参考
— END —