JS红皮书解读之防篡改对象

论坛 期权论坛 期权     
webchen   2019-7-13 08:26   1339   0
前言:去年7月份在简书写的,发现后端、React 中也有体现,觉得有必要在微信上分享下。
注意:一旦把对象定义为防篡改,就无法撤销了。
1.不可扩展对象扩展指可以给对象添加属性和方法。
使用Object.preventExtensions(object)阻止对象扩展
  1.    let a={name:'chen'}    Object.preventExtensions(a)    a.age=18    console.log(a.age) //undefined    delete a.name    console.log(a) //{}
复制代码
注意:(1)严格模式下,不是undefined而是报错。(2)可以删除或修改已有对象属性,但不可添加新属性
使用Object.isExtensible(object) 判断对象是否可扩展
  1. console.log(Object.isExtensible(a))  //false
复制代码
2.密封的对象(sealed object)注意:(1)被密封的对象不可扩展,因此可用Object.isExtensible(object)来判断(2)可以修改,不可删除已有属性,不可添加新属性
  1.     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)判断是否密封
3.冻结的对象(frozen object)冻结的对象是最严格的防篡改级别,既不可扩展,也是密封的,不可修改属性。
使用Object.freeze(object)冻结对象
对于JS库作者而言,冻结对象可防止有人修改库的核心对象。
小进进还没开通留言功能,觉得不错的话,点「在看」、转发朋友圈都是一种支持 (●''●) 。

欢迎关注本公众号:

(完)
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP