
js常量的定义
js常量,javascript常量定义
Object.freeze()
方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze()
返回和传入的参数相同的对象。
例子1:
var obj = { prop: 42 }; Object.freeze(obj); //冻结 obj.prop = 33; // 更改不了 console.log(obj.prop); // 输出42
例子2:
const obj = { prop: 42 }; obj.prop = 33; // 更改了 console.log(obj.prop); // 输出33
例子3:
const obj = 1; obj = 100; //这边报错异常 console.log(obj); //值还会是 1
对应例子2和3可以知道,const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。可以修改复合数据类型的的属性。