禁止擴充物件的另一個選擇
前言
在之前的 在 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 到底在幹嘛