const是ES6中的一种声明常量的方式
如果希望一个对象设置完属性的时候不允许他再做修改的话,可以利用一种freeze
()对象冻结的方法,
浅冻结
const声明的变量是不可修改的,指的是常量名对应的内存单元中的数据不能更换;
他对于基本类型来说的话就是不可修改,但是对于复杂类型来说的话,只是不能更改为新的数据,但是内部属性可以修改;如果希望一个属性完全不能够修改的话这个时候就需要冻结该对象;
const DATA = {
name: 'jack',
age: 18,
};
Object.freeze(DATA)
调用对象冻结的方法,该对象的基本属性和值将不能够被修改;
深冻结
浅冻结只是能冻结一些基本的数据类型,如果在这个对象里面还有一些复杂的数据类型将不能够被冻结,所有如果我们需要将整个对象完全冻结,他们的值不管是基本类型还是复杂类型都不能够被修改的话,就需要封装一个深冻结函数;
const DATA = {
name: 'jack',
age: 18,
aiHao: ['吃', '喝', '打代码', {
football: '足球',
basketball: '篮球',
tanQiu: '弹球'
}]
};
以上代码里面,用const声明了一个对象,在这个对象里面还有一些复杂的数据类型浅冻结的范围只能够冻结name和age但是冻结不了里面的数组和里面数组里面的对象,至此封装了一个冻结函数;
function deepFreeze(obj) {
Object.freeze(obj);
for (var k in obj) {
if (typeof obj[k] === 'object') {
deepFreeze(obj[k]);
}
}
}
调用该方法就能达到深冻结的需求;