JSON.parseImmutable S2
提案概览
- 阶段: Stage 2
- 状态: 进行中
- ECMAScript 版本: —
- 同步时间: 2026年8月26日
- English original · 官方仓库
提案速览
该提案解决了将 JSON 字符串解析为深度不可变对象的需求。它引入了一个 JSON.parseImmutable 函数,返回深度冻结的对象,类似于递归使用 Object.freeze。
Note
以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。
JSON.parseImmutable 提案
状态
阶段 2
提案发起人:
- Nicolò Ribaudo(Igalia)
- Ashley Claymore(Bloomberg)
- Peter Klecha(Bloomberg)
概述
本提案指出 ECMAScript 需要一种函数,用于解析 JSON 字符串但返回深度不可变的对象。本提案的当前状态是向规范中添加一个 JSON.parseImmutable 函数,该函数接受一个字符串以及可选的 reviver 函数,并返回一个深度冻结的对象,即一个配置为仿佛在其上递归调用了 Object.freeze 的对象。
目前要实现类似的结果,可以使用 reviver:
但原生实现可能比基于 reviver 的实现快得多,而且静态分析将极大地受益于知道 JSON.parseImmutable 的结果始终是深度冻结的。
历史
本提案最初是 Records and Tuples 提案 的一部分,但为了减少核心 Records and Tuples 提案的范围而拆分为独立的提案。#330。在那个时候,提案中的 JSON.parseImmutable 函数将返回一个 Record 或 Tuple,它们是 Records and Tuples 提案提出的两种类型。Records and Tuples 提案被撤回,因此需要更改本提案的范围。