在看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属性,所以这个也叫“浅冻结”,与浅克隆的意义相近。
问题:如何实现递归深冻结??后续贴代码