回顾Object.freeze()
Object.freeze() 方法可以冻结一个对象。
一个被冻结的对象再也不能被修改;
冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。
实现Object.freese
Object.deepFreeze = function (o){
// Objcet.keys() 拿不到不可枚举的属性
var _keys = Object.getOwnPropertyNames(o);
if(_keys.length) {
_keys.forEach(function (k){
var _value = o[k];
if(typeof _value === 'object' && _value !== null ){
Object.deepFreeze(_value);
}
})
}
Object.freeze() 方法和 const 区别
const, 定义了无法重新分配的变量。
Object.freeze() 将一个对象作为参数,并返回与不可变对象相同的对象。这意味着不能添加,删除或更改对象的任何属性。