JavaScript 对象的 Object.isFrozen() 方法详解
Object.isFrozen()
方法检查一个对象是否被冻结。
示例
let obj = { name: "JavaScript" };
// 新对象是可扩展的,所以它们不是冻结的
console.log(Object.isFrozen(obj));
// 输出: false
isFrozen()语法
isFrozen()
方法的语法是:
Object.isFrozen(obj);
这里,isFrozen()
是一个静态方法。因此,我们需要使用类名Object
来访问这个方法。
注意: 冻结的对象不能再被更改。冻结一个对象会阻止:
- 向对象添加新属性。
- 从对象移除现有属性。
- 更改现有属性的可枚举性、可配置性或可写性。
- 更改现有对象属性和原型的值。
isFrozen()参数
isFrozen()
方法接受:
- obj - 需要检查是否被冻结的对象。
isFrozen()返回值
isFrozen()
方法返回:
true
- 如果对象被冻结false
- 如果对象未被冻结
示例:JavaScript对象Object.isFrozen()
let newObj = { b: 2 };
// 阻止扩展不会冻结对象
// 因为其属性仍然是可配置的
Object.preventExtensions(newObj);
// 检查newObj是否被冻结
console.log(Object.isFrozen(newObj));
// 输出: false
// 使newObj不可写
Object.defineProperty(newObj, "b", {
writable: false,
});
// 对象未被冻结
console.log(Object.isFrozen(newObj));
// 输出: false
// 使用freeze()方法
Object.freeze(newObj);
// 对象最终被冻结
console.log(Object.isFrozen(newObj));
// 输出: true
在上面的示例中,我们尝试通过
- 使用
preventExtensions()
方法,和 - 通过设置
writable
标志为false
来使其不可写,
来冻结newObj。
然而,这两种方法都未能冻结对象。
最后的输出表明,只有在调用freeze()
方法后,newObj才被冻结。
推荐阅读: