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]);
 			}
 		});
 	};
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息