ES6:const

const声明一个只读常量,一旦声明必须当即初始化,不能留到之后赋值。 同let存在块级做用域,const命令声明的常量也是不提高,一样存在暂时性死区,也与let同样不可重复声明 本质:const实际上保证的并非变量的值不得改动,而是变量指向的那个内存地址不得改动。对于基本数据类型,值就保存在变量指向的那个内存地址,可是引用数据类型,变量指向的内存地址保存的只是一个指针,const只能保证这个指针是固定的。指针

const foo = {};

// 为 foo 添加一个属性,能够成功
foo.prop = 123;
foo.prop // 123

// 将 foo 指向另外一个对象,就会报错
foo = {}; // TypeError: "foo" is read-only

若是真的不想改变对象自己须要使用Object.freeze方法code

const foo = Object.freeze({});
// 常规模式时,下面一行不起做用;
// 严格模式时,该行会报错
foo.prop = 123;

将对象自己及其属性完全冻结,使用递归方法实现对象

var fun = (obj) =>{
 		Object.freeze(obj);
 		Object.keys(obj).forEach((key)=>{
 			if(typeof obj[key] == 'object'){
 				fun(obj[key]);
 			}
 		});
 	};
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息