1. 程式人生 > >JavaScript學習筆記(六)防篡改對象

JavaScript學習筆記(六)防篡改對象

ext 可擴展 ... boolean ava onf span class sse

1. 不可擴展對象

可寫,可刪除,不可新增

Object.preventExtensions(obj)
Object.isExtensible(obj)

2. 密封對象

可寫,不可刪除,不可新增, [[Configurable]]設置為false

Object.seal(obj)
Object.isSealed(obj)

3. 凍結對象

不可寫,不可刪除,不可新增, [[Configurable]]設置為false, [[Writable]]為false

Object.freeze(obj)
Object.isFrozen(obj)

擴展:

對象屬性的[[Configurable]]特性為false時,表示不能再用Object.defineProperty(obj, prop, descriptor)修改對象屬性的特性了。

對象屬性的特性描述:

{
  value: 任意類型的值, //
  enumerable: Boolean, // 是否可枚舉(for...in或Object.keys())
  configurable: Boolean, // 是否可以刪除目標屬性或是否可以再次修改屬性的特性
  writable: Boolean // 屬性值是否可以重寫
}

JavaScript學習筆記(六)防篡改對象