Object.freeze() 冻结对象
最后更新:2026-09-09
Object.freeze() 冻结对象
Object.freeze 冻结对象:不能添加、删除或修改属性。是一种轻量级的不可变保护,但只是浅冻结(嵌套对象不受影响)。
| 分类 | 对象 |
|---|---|
| ES 版本 | ES5 |
📝 语法
Object.freeze(对象);
⚙️ 参数
| obj | 要冻结的对象。 |
|---|
返回值:被冻结的对象(同一引用)。
是否修改原值:是(原地修改)
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
5000
true
💡 提示 freeze 保证变量名不能重新赋值,不是值不可变——想让嵌套对象也冻结需要递归 freeze。
⚠️ 警告 freeze 是浅冻结——嵌套对象的属性仍然可以修改。
🌐 浏览器支持
| 浏览器 | |||||
|---|---|---|---|---|---|
| Object.freeze() | ✓ v1 | ✓ v12 | ✓ v1.5 | ✓ v3 | ✓ v10.5 |
| 所有现代浏览器均支持 | |||||
🏷️ 相关对象
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
QObject.freeze 和 const 有什么区别?
Aconst 只保证变量名不能重新赋值(绑定不变);freeze 保证对象的属性不能增删改。
Qfreeze 是深冻结吗?
A不是——只冻结一层。嵌套对象需要递归 freeze。
Q冻结后还能解冻吗?
A不能——freeze 是不可逆的。需要可变副本时用 {...obj} 创建新对象。