es5中的保护对象
由对象中的属性容易修改,js 在es5 增加了对象的属性保护对象
用来合理的限制修改范围
查看这个小对象
var dongdong = {
name:'dongdong',
age:18
}
var nameObject = Object.getOwnPropertyDescriptor(dongdong,"name")
console.log(nameObject)
//输出结果
{
configurable: true //是否可以配置当前保护对象
enumerable: true //是否可以被枚举(遍历)
value: "dongdong" //值
writable: true //是否可以写入值(修改值)
}
修改对象中的单个属性的保护对象
//接上例子的对象
Object.defineProperty(dongdong,"name",{
enumerable:false,
wrtable:false
})
//修改后再遍历东东这个对象只能遍历到age了name的值也不能修改了
for (var key in dongdong ){
console.log(key,dondong[key])//age,18//遍历不到name属性了
}
dongdong.name = 'ranran'//会修改不成功
console.log(dongdong.name)//输出dongdong
definedProperty方法只能修改对象中一个属性开关 ,如果多个属性都需要修改开关,代码会很繁琐
//使用Object.defineProperties(对象,{
// 属性名:{
// 开关名:true 或者 false
// }
//})
//接上个栗子的对象
Object.defineProperties(dongdong,{
name:{
enumerable:false,
writable:false,
configurable:false
},
age:{
enumerable:false,
writable:true,
configurable:false
}
})
保护对象可以用来设置对象的规则,而不是能够随意修改,