JavaScript freeze() 方法有什么作用?
JavaScript中的Object.freeze()
方法用于冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象就意味着:
- 不能向这个对象添加新的属性。
- 不能修改其已有属性的值。
- 不能删除已有属性。
- 不能修改其已有属性的可枚举性、可配置性、可写性。
- 也不能修改已有属性的值。
换句话说,一个被冻结的对象是常量化的。这个方法返回被冻结的对象。
例如:
let obj = {
prop: 42
};
Object.freeze(obj);
obj.prop = 33;
// 不会报错,但修改不会成功
console.log(obj.prop); // 输出 42
在这个例子中,我们创建了一个对象obj
,然后我们使用Object.freeze()
方法冻结它。然后我们尝试修改obj
的prop
属性,但是因为obj
已经被冻结,所以修改不会成功,obj.prop
的值仍然是42。
要注意的是Object.freeze()
是浅冻结,也就是说,如果一个对象的属性值仍然是对象,那么这个对象属性值的内容还是可以修改的。如果你需要深度冻结对象,你需要自己编写代码来递归冻结每个对象属性值。