用處:
1、一個大的數據對象裏,在你確信它不需要改變的時候,你可以給他freeze(),可以大大的增加性能。
2、也可用作凍結線上的配置文件中的對象,以防有人誤改。
const nums = 6;
nums = 7;
console.log("num==",num);
const 聲明一個常量,一旦聲明,常量的值就不能改變,報錯Uncaught TypeError: Assignment to constant variable.
譯:未捕獲的TypeError:分配給常數變量。意味着不能更改。
但是,如果使用 const 聲明的是一個複雜數據類型,比如一個對象,修改其屬性值是可以成功的。
const obj = {'age':18};
obj.age = 20;
console.log("obj",obj) //obj {age: 20}
如果不希望對對象的屬性或屬性值不進行更改,可使用Object.freeze(Object)對對象進行凍結~
參數Object、返回值:均表示被凍結的對象
Object.freeze(obj); //對象凍結
obj.age = 20;
console.log("obj",obj); //obj {age: 18}
需要注意的是,使用 Object.freeze()凍結的對象只能保證這個對象的屬性不變,如果對象屬性的值還是一個複雜數據類型,那麼是可以修改成功的。
const obj_1= {
"name":'Joyce',
'test':{
'age':18
}
}
obj_1.name = 'spring';
obj_1.test.age = 30;
console.log("obj_1",obj_1.name,obj_1.test.age) //obj_1 spring 30
Object.freeze(obj_1);
obj_1.name = 'kaliwo';
obj_1.test.age = 30;
console.log("obj_1",obj_1.name,obj_1.test.age) //oobj_1 Joyce 30