JavaScript freeze() 方法有什么作用?

JavaScript中的Object.freeze()方法用于冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象就意味着:

  1. 不能向这个对象添加新的属性。
  2. 不能修改其已有属性的值。
  3. 不能删除已有属性。
  4. 不能修改其已有属性的可枚举性、可配置性、可写性。
  5. 也不能修改已有属性的值。

换句话说,一个被冻结的对象是常量化的。这个方法返回被冻结的对象。

例如:

let obj = {
  prop: 42
};

Object.freeze(obj);

obj.prop = 33;
// 不会报错,但修改不会成功
console.log(obj.prop); // 输出 42

在这个例子中,我们创建了一个对象obj,然后我们使用Object.freeze()方法冻结它。然后我们尝试修改objprop属性,但是因为obj已经被冻结,所以修改不会成功,obj.prop的值仍然是42。

要注意的是Object.freeze()是浅冻结,也就是说,如果一个对象的属性值仍然是对象,那么这个对象属性值的内容还是可以修改的。如果你需要深度冻结对象,你需要自己编写代码来递归冻结每个对象属性值。

发表评论

后才能评论