ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

保护对象

2022-05-09 22:00:36  阅读:189  来源: 互联网

标签:false 开关 对象 Object 保护 true 属性


保护对象:控制对对象的属性值或对象结构进行的随意的篡改。
两个层面:
1、保护对象的属性

es5对对象的属性进行重新的分类:

(1)命名属性:可用.访问到的属性。

又分为:数据属性:实际存储属性值的属性;

访问器属性:不实际存储属性值,仅提供对另一个属性的保护。

保护数据属性:ES5标准中,每个数据属性都是一个微缩的小对象。每个小对象中,保存一个属性值和三个开关。

比如:obj={eid:1001}。eid不再是一个变量而是eid:{value:1001,

writable:false/true, //可写

enumerable:false/true, //可遍历

configurable:false/true //可删除属性/可修改前两个开关

}

如何修改这三个开关属性:Object.defineProperty( 对象名,

"属性名",{

开关:true/false

} )

同时修改多个属性:Object.definProperties( 对象名,{

属性名: {开关:true/false},

属性名:{开关:true/false},

} )

只要设置writable和enumerable,都要同时关闭configurable,目的是禁止修改前两个开关。且configurable一旦被改为false,不可逆!

访问器属性自定义保护数据属性:

访问期刊属性:自己不保存数据,专门提供对其他数据的保护。

 

 

二、保护对象的结构
三个级别:防扩展、密封、冻结

保护结构:防止对对象的结构进行篡改,比如:添加新属性,删除现有的属性 有3个级别

1、防拓展:禁止给对象添加新属性 Object.preventExtensions(对象) 防止对eric的一切扩展 原理: 内部属性: extensible:true preventExtensions将extensible改为false

2、密封:在兼具防扩展的基础上,进一步防止删除现有属性 Object.seal(对象) 将eric密封起来强调:属性值,依然可以修改。 seal原理:自动将所有属性的configurable(可配置的)为false

3、冻结:在密封基础上,进一步禁止修改属性值 何时:今后凡是共用的对象的属性值,不能随便更改 如何:Object.freeze(对象) 原理:自动将所有属性的writable:false

 

标签:false,开关,对象,Object,保护,true,属性
来源: https://www.cnblogs.com/qjf2001109/p/16251124.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有