对象/属性保护-不可扩展-内部特征

1、对象权限

对象内部特性:

[[Extensible]]  是否可添加属性  —— 检测Object.isExtensible()

设置:Object.preventExtensions()

var son = {
  name: 'ad'
}
Object.preventExtensions(son);
son.age = 23;
console.log(son.age in son) //false;
console.log(son.age) //undefined

对象封印:Object.seal() ——  等同于 对象特征[[Extensible]] = false 属性特征[[Configurable]]  = false

Object.isSealed()

isFrozen()

对象冻结:—— 等同于 对象封印 +  [[Writable]] = false

2、对象属性权限

配置:Object.defineProperty()

获取:Object.getOwnPropertyDescriptor()

1)数据属性特征

[[Enumerable]]  是否可枚举 ——检测propertyIsEnumberable()

[[Configurable]] 是否可配置

[[Value]]

[[Writable]]

2)访问器属性特性:

[[Get]]

[[Set]]

设置不可配置的属性,不能进行修改,删除

var person = {
  name:'xa',
  age:34,
  sex:'nv'
}
console.log(Object.keys(person)) // ["name", "age","sex"]
Object.defineProperty(person,"name",{
  enumerable:false
})
console.log(Object.keys(person)) // ["age","sex"]

你可能感兴趣的:(对象/属性保护-不可扩展-内部特征)