该方法将对象冻结,主要用于const 声名的引用类型数据也可以改变值的问题
const foo = Object.freeze({});
// 常规模式时,下面一行不起作用;
// 严格模式时,该行会报错
foo.prop = 123;
var t = {
a:{
t:2
}
}
//冻结t对象下属性a
Object.freeze(t)
t.a.t = 3
//不能冻结属性a下的值obj中的对象
console.log(t.a.t) //3
所以应该向深拷贝一样,对其属性也冻结
var constantize = (obj) => {
Object.freeze(obj);
Object.keys(obj).forEach( (key, i) => {
if ( typeof obj[key] === 'object' ) {
constantize( obj[key] );
}
});
};