Object.isFrozen()
方法用于检查对象是否被冻结。
示例
let obj = {name: "JavaScript"};
// new objects are extensible, so they're not frozen
console.log(Object.isFrozen(obj));
// Output: false
isFrozen() 语法
isFrozen()
方法的语法是:
Object.isFrozen(obj)
在这里,isFrozen()
是一个静态方法。因此,我们需要使用类名 Object
来访问该方法。
注意: 被冻结的对象将无法再被修改。冻结对象会阻止:
- 向对象添加新属性。
- 从对象中删除现有属性。
- 更改现有属性的可枚举性、可配置性或可写性。
- 更改现有对象属性的值和原型。
isFrozen() 参数
isFrozen()
方法接受一个参数:
- obj - 要检查是否被冻结的对象。
isFrozen() 返回值
isFrozen()
方法返回:
true
- 如果对象被冻结false
- 如果对象未被冻结
示例:JavaScript Object.isFrozen()
let newObj = { b: 2 };
// preventing extensions doesn't freeze an object
// since its properties are still configurable
Object.preventExtensions(newObj);
// check if newObj is frozen
console.log(Object.isFrozen(newObj));
// Output: false
// make newObj non-writable
Object.defineProperty(newObj, "b", {
writable: false,
});
// object is not frozen
console.log(Object.isFrozen(newObj));
// Output: false
// use the freeze() method
Object.freeze(newObj);
// object is finally frozen
console.log(Object.isFrozen(newObj));
// Output: true
在上面的示例中,我们尝试通过
- 使用 preventExtensions() 方法来冻结 newObj,
- 并将
writable
属性设置为false
,使其不可写。
然而,这两种方法都未能冻结对象。
最终的输出表明,只有在调用 freeze()
方法后,newObj 才会被冻结。
另请阅读