前言:
去年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库做者而言,冻结对象可防止有人修改库的核心对象。
(完)