递归冻结对象及其所有嵌套属性。
DeepFreeze.of 以深度优先方式遍历对象的所有自有数据属性,并对每个对象调用 Object.freeze。对于访问器属性(getter/setter),仅冻结属性描述符本身, 不会调用 getter,也不会冻结其返回值,从而避免误冻结页面或运行时提供的 可变外部对象。
DeepFreeze.of
Object.freeze
该工具常用于将配置对象、常量集合或库返回的上下文快照转换为不可变对象, 防止上层调用方意外修改内部状态。
26.7.1
静态
递归冻结传入的对象及其所有嵌套属性。
非对象值(如原始类型、null)会被直接返回;已冻结的对象也会直接返回, 避免重复处理。
null
待冻结对象的类型。
待冻结的任意值。
冻结后的同一引用。
const config = DeepFreeze.of({ api: { base: "https://example.com", timeout: 5000 }, flags: ["a", "b"],})// config.api.base = "..." // TypeError: Cannot assign 复制
const config = DeepFreeze.of({ api: { base: "https://example.com", timeout: 5000 }, flags: ["a", "b"],})// config.api.base = "..." // TypeError: Cannot assign
递归冻结对象及其所有嵌套属性。
DeepFreeze.of以深度优先方式遍历对象的所有自有数据属性,并对每个对象调用Object.freeze。对于访问器属性(getter/setter),仅冻结属性描述符本身, 不会调用 getter,也不会冻结其返回值,从而避免误冻结页面或运行时提供的 可变外部对象。该工具常用于将配置对象、常量集合或库返回的上下文快照转换为不可变对象, 防止上层调用方意外修改内部状态。
添加于
26.7.1
参阅
Object.freeze