前言:
去年7月份在簡書寫的,發現後端、React中也有體現,以爲有必要在微信上分享下。後端
注意:一旦把對象定義爲防篡改,就沒法撤銷了。微信
1.不可擴展對象
擴展指能夠給對象添加屬性和方法。spa
使用Object.preventExtensions(object)阻止對象擴展3d
let a={name:'chen'} Object.preventExtensions(a) a.age=18 console.log(a.age) //undefined delete a.name console.log(a) //{}
注意:
(1)嚴格模式下,不是undefined而是報錯。
(2)能夠刪除或修改已有對象屬性,但不可添加新屬性code
使用Object.isExtensible(object) 判斷對象是否可擴展對象
console.log(Object.isExtensible(a)) //false
2.密封的對象(sealed object)
注意:
(1)被密封的對象不可擴展,所以可用Object.isExtensible(object)來判斷
(2)能夠修改,不可刪除已有屬性,不可添加新屬性blog
Object.seal(a) a.age=20 delete a.name console.log(a.name) //chen a.name='ch' console.log(a.name) //ch
使用Object.isSealed(object)判斷是否密封rem
3.凍結的對象(frozen object)
凍結的對象是最嚴格的防篡改級別,既不可擴展,也是密封的,不可修改屬性。it
使用Object.freeze(object)凍結對象io
對於JS庫做者而言,凍結對象可防止有人修改庫的核心對象。
(完)