以下是 ECMAScript 2022(ES13) 的总结,保持既定的结构梳理重点:
🧩 一、总体概览
ECMAScript 2022(ES13)在 2022 年 6 月发布。 这一版的主题是“类与模块的工程化体验”——正式纳入多种类字段语法、支持顶层 await,并补齐错误追踪与索引访问的细节。 语言在模块化、可观测性与 ergonomics 上进一步成熟。
🚀 二、主要新特性一览
class Counter {
#value = 0;
static instances = 0;
constructor() {
Counter.instances++;
}
increment() {
this.#value++;
}
get value() {
return this.#value;
}
}
支持公共/私有实例字段、静态字段、私有方法与访问器,让类封装更贴近主流语言习惯。
class Config {
static registry = new Map();
static {
Config.registry.set('lang', navigator.language);
}
}
允许在类定义内执行一次性的初始化逻辑(可访问私有字段),避免把复杂逻辑塞进构造函数或模块顶层。
const config = await fetch('/config.json').then(r => r.json());
ES Modules 可以直接使用 await,简化动态导入、配置加载与模块级异步初始化(需留意依赖环)。
list.at(-1); // 读取最后一个元素
提供从尾部索引的读法,提升读取数组、TypedArray 和字符串尾部元素的可读性。
Object.hasOwn(user, 'id');
更语义化的自有属性检测(取代 Object.prototype.hasOwnProperty.call),避免原型污染导致的判断失败。
throw new Error('Failed to load', { cause: originalError });
为 Error 新增 cause 属性,便于在日志与监控中串联错误上下文。
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 的关键铺垫。