Object.freeze()
方法可以凍結一個對象。一個被凍結的對象再也不能被修改;
凍結了一個對象則不能向這個對象添加新的屬性,不能刪除已有屬性,不能修改該對象已有屬性的可枚舉性、可配置性、可寫性,以及不能修改已有屬性的值。
此外,凍結一個對象后該對象的原型也不能被修改。freeze()
返回和傳入的參數相同的對象。
1 const obj = { 2 property: 42 3 }; 4 5 const obj2 = Object.freeze(obj); 6 7 obj.property = 33; 8 // Throws an error in strict mode 會拋出異常 9 10 console.log(obj.property); 11 // expected output: 42 值沒有被改變
但是被freeze的對象,可以被替換
new Vue({ data: { // vue不會對list里的object做getter、setter綁定 list: Object.freeze([ { value: 1 }, { value: 2 } ]) }, created () { // 界面不會有響應 this.list[0].value = 100; // 下面兩種做法,界面都會響應 this.list = [ { value: 100 }, { value: 200 } ]; this.list = Object.freeze([ { value: 100 }, { value: 200 } ]); } })