該方法將對象凍結,主要用于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] );
}
});
};