保护对象包括保护对象的数据和保护对象的结构
1.保护对象的数据 1.数据属性
2.访问器属性
数据属性:enumerable :可用for in 遍历
value :
configrable : 1 可删除 2.e。。。和r。。。 可修改 配置完不可逆
writeble 可修改
访问器属性
1.将被保护的属性换个名字 例如 ——age 半隐藏 en--false con--false
2.为对象添加访问器属性 Object.setProperties age {
get:function(){}
set:function(value)
}
可遍历 不可配置
2、保护结构:防止对对象的结构进行篡改,比如:添加新属性,删除现有的属性
有3个级别
一、防拓展:禁止给对象添加新属性
Object.preventExtensions(对象)
防止对eric的一切扩展
二、密封:在兼具防扩展的基础上,进一步防止删除现有属性
Object.seal(对象)
将eric密封起来
强调:属性值,依然可以修改。
seal原理:自动将所有属性的configurable为false
三、冻结:在密封基础上,进一步禁止修改属性值
何时:今后凡是共用的对象的属性值,不能随便更改
如何:Object.freeze(对象)
原理:自动将所有属性的writable:false