禁止擴充物件的另一個選擇
前言
在之前的 在 JavaScript 禁止物件擴充 介紹了禁止擴充物件的方法,最近發現還有另一個方法也可以禁止物件擴充,在此把學習的過程做個紀錄。
內容
這次要透過 Object.seal() 來禁止擴充物件,範例如下
let obj = { a : 1, b : 2 }; Object.seal(obj); obj.c = 3; console.log( obj ); // [object Object] { // a: 1, // b: 2 // } delete obj.b; console.log( obj ); // [object Object] { // a: 1, // b: 2 // } obj.b = 42; console.log( obj ); // [object Object] { // a: 1, // b: 42 // }
範例開頭就透過 Object.seal() 來禁止物擴充,接著實驗擴充該物件後發現是不可以的,接著測試刪除成員,結果一樣是不行,接著試驗修改成員,結果是可以的! Object.seal() 與 Object.preventExtensions() 最大的不同是 Object.seal() 是"不可"刪除成員,但 Object.preventExtensions() 是可以的。
參考資料
[ blog.boggy.tw ] 搞懂 JavaScript的Object.freeze, Object.seal, Object.preventExtensions 到底在幹嘛