2023年9月25日 星期一

禁止擴充物件的另一個選擇

 禁止擴充物件的另一個選擇

前言

  在之前的 在 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 到底在幹嘛


相關文章與資料

在 JavaScript 禁止物件擴充

關於 Object.preventExtensions() 的注意事項

沒有留言:

張貼留言