js常量的定义

lys2019年06月14日 0条评论

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只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。可以修改复合数据类型的的属性。