JavaScript Object.isFrozen()

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 才会被冻结。


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战