目录
暂无目录
const 关键字是用来声明一个常量的,它可以使一个变量引用不能被改变,而且在定义之初就要赋予初值,不然会报语法错误。这个变量如果是数组或者对象,则它里面的内容其实是可以修改的。
而Object.freeze()
方法是冻结了一个对象里面属性的引用,对象的属性值不能改变,但如果对象的属性值是另一个数组或对象,则这个属性值的内部依然可以修改。所以Object.freeze()
实际上是一个浅冻结
const obj = {
name:'zhangsan',
age:18,
address:[
'asuhe',
'asuka'
]
}
console.log(obj.age); // 18
obj.age = 20;
console.log(obj.age); // 20
obj = {}; // TypeError
Object.freeze(obj)
obj.age = 30;
console.log(obj.age); //20
obj.address = []; // 修改失败,但不报错
obj.address[0] = 'sphinx';
console.log(...obj.address); //'sphinx' 'asuhka'
Object.freeze()
内部还会调用Object.seal()
方法,让被冻结的对象不能添加或删除属性
参考资料:
[Object.freeze() vs const](https://stackoverflow.com/questions/33124058/object-freeze-vs-const)