Object.freeze + Object.seal syntax S1
中文标题:Object.freeze 和 Object.seal 语法
提案概览
- 阶段: Stage 1
- 状态: 进行中
- ECMAScript 版本: —
- 同步时间: 2026年8月26日
- English original · 官方仓库
提案速览
该提案引入了 Object.freeze 和 Object.seal 的语法,以提高易用性并防止通过原型链进行修改。它草图化了如 {# . #} 用于冻结和 {| . |} 用于密封的语法,适用于对象字面量、数组、解构模式和函数参数。该提案处于早期阶段,包含草图和潜在扩展,尚未成为正式的 TC39 提案。
Note
以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。
Object.freeze 和 Object.seal 语法
理由
Object.freeze 和 Object.seal 都是有用的函数,但它们的用法不够便捷,尤其是在处理深层嵌套对象或尝试做复杂操作(如创建冻结对象的超集)时。 此外,即使是冻结的对象也可以通过其原型链被修改:
为了防止这种情况,你可以使用 Object.freeze({ __proto__: null }) 或
Object.freeze(Object.assign(Object.create(null), {})) 来确保冻结的
对象不能通过其原型链被修改。
此外,在其他地方使用这些语法也会很有用。例如,密封解构表达式或冻结函数参数以创建不可变的绑定。