object.isfrozen()用于检测对象是否被冻结,返回布尔值:true表示对象不可扩展、所有自有属性不可配置且不可写,false表示未完全满足冻结条件;该方法仅检测目标对象自身,不递归检查嵌套对象。

用 Object.isFrozen() 方法可以检查一个对象是否被冻结。
基本用法
该方法接收一个对象作为参数,返回布尔值:
- true 表示对象已被冻结(不可扩展、所有属性不可配置、不可写)
- false 表示对象未被冻结(哪怕只有一项不满足冻结条件)
例如:
const obj = { a: 1 };
console.log(Object.isFrozen(obj)); // false
Object.freeze(obj);
console.log(Object.isFrozen(obj)); // true
注意:冻结是浅层的
Object.isFrozen() 只检测目标对象自身的状态,不递归检查嵌套对象:
const obj = { inner: { x: 1 } };
Object.freeze(obj);
console.log(Object.isFrozen(obj)); // true(obj 自身冻结)
console.log(Object.isFrozen(obj.inner)); // false(inner 未被冻结)
如果需要深冻结,需手动递归调用 Object.freeze(),且 Object.isFrozen() 也无法自动验证深层是否冻结。
与其它状态方法的关系
一个对象被冻结,等价于同时满足以下三个条件:
-
Object.isSealed(obj) === true(已密封) -
Object.isExtensible(obj) === false(不可扩展) - 所有自有属性的
configurable和writable都为false
所以你也可以手动组合判断,但直接用 Object.isFrozen() 更简洁可靠。
冻结前后的对比示例
const obj = { a: 1, b: 2 };
// 修改属性值(非严格模式下静默失败,严格模式报错)
obj.a = 99;
console.log(obj.a); // 仍为 1
// 添加新属性
obj.c = 3;
console.log('c' in obj); // false
// 删除属性
delete obj.b;
console.log('b' in obj); // true
Object.freeze(obj);
console.log(Object.isFrozen(obj)); // trueJava免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











