以下是 ECMAScript 2022(ES13) 的总结,保持既定的结构梳理重点:

🧩 一、总体概览

ECMAScript 2022(ES13)在 2022 年 6 月发布。 这一版的主题是“类与模块的工程化体验”——正式纳入多种类字段语法、支持顶层 await,并补齐错误追踪与索引访问的细节。 语言在模块化、可观测性与 ergonomics 上进一步成熟。

🚀 二、主要新特性一览

  1. 类字段与私有成员(Class Fields & Private Members)
class Counter {
    #value = 0;
    static instances = 0;
    constructor() {
        Counter.instances++;
    }
    increment() {
        this.#value++;
    }
    get value() {
        return this.#value;
    }
}

支持公共/私有实例字段、静态字段、私有方法与访问器,让类封装更贴近主流语言习惯。

  1. 静态初始化块(static {})
class Config {
    static registry = new Map();
    static {
        Config.registry.set('lang', navigator.language);
    }
}

允许在类定义内执行一次性的初始化逻辑(可访问私有字段),避免把复杂逻辑塞进构造函数或模块顶层。

  1. 顶层 await(Top-level await)
const config = await fetch('/config.json').then(r => r.json());

ES Modules 可以直接使用 await,简化动态导入、配置加载与模块级异步初始化(需留意依赖环)。

  1. Array.prototype.at()
list.at(-1); // 读取最后一个元素

提供从尾部索引的读法,提升读取数组、TypedArray 和字符串尾部元素的可读性。

  1. Object.hasOwn()
Object.hasOwn(user, 'id');

更语义化的自有属性检测(取代 Object.prototype.hasOwnProperty.call),避免原型污染导致的判断失败。

  1. Error Cause(错误原因链)
throw new Error('Failed to load', { cause: originalError });

为 Error 新增 cause 属性,便于在日志与监控中串联错误上下文。

  1. 正则匹配索引(RegExp Match Indices, /d 标志)
const match = /(foo)/d.exec('foo');
match.indices[0]; // [0, 3]

提供捕获组的起止位置,方便语法高亮、编辑器与代码分析工具构建精确的定位。

🧠 三、总结 类型 代表特性 影响 类与封装 类字段、私有成员、静态块 类语法更贴近 OO 习惯,封装更可靠 模块加载 顶层 await 模块初始化可异步,但需规划依赖拓扑 数据访问 Array.at、Object.hasOwn 读写尾部与属性探测更语义化 调试可观测 Error cause、RegExp indices 错误追踪与文本处理工具更具上下文

📌 整体意义: ECMAScript 2022 让类真正具备工业级语法,JavaScript 在封装、模块引导、观察性等方面与其他主流语言看齐。 对于工具链与框架作者而言,新的正则索引、错误 cause 都是提升 DX 的关键铺垫。