Object.freeze()的作用
在看VUE官方文档讲到data的时候有提到这样一句话:这里唯一的例外是使用 Object.freeze(),这会阻止修改现有的 property,也意味着响应系统无法再追踪变化所以记录一下Object.freeze()的作用.Object.freeze()方法可以冻结一个对象一个被冻结的对象再也不能被修改不能添加新属性不能删除已有属性不能修改已有属性的可枚举性、可配置性、可写性不能修改已有属性的值
·
在看VUE官方文档讲到data的时候有提到这样一句话:
这里唯一的例外是使用 Object.freeze(),这会阻止修改现有的 property,也意味着响应系统无法再追踪变化
所以记录一下Object.freeze()的作用.
Object.freeze()方法可以冻结一个对象
一个被冻结的对象再也不能被修改
- 不能添加新属性
- 不能删除已有属性
- 不能修改已有属性的可枚举性、可配置性、可写性
- 不能修改已有属性的值
- 不能修改原型
总的来说跟const声明一个常量差不多,但是我们使用const声明一个对象时,该对象里面的属性仍然可以被修改的。所以,如果你想禁止一个对象的修改就可以用Object.freeze()
const obj = {
one: 1,
person: {
age:18
}
}
Object.freeze(obj);
obj.one = 2
obj.person.age = 99
console.log(obj);//{ one: 1, person: { age: 99 } }
从上述代码中可以知道,我们尝试将one这个属性修改成2,但是最后打印出来的值仍然是1。需要注意的一点是,person这个对象根本没有被冻结,仍然可以修改它的age属性,所以这个也叫“浅冻结”,与浅克隆的意义相近。
问题:如何实现递归深冻结??后续贴代码
更多推荐
已为社区贡献1条内容
所有评论(0)