.configurable:可配执行 .enumerble:枚举性 .writable:可读写性 .value:数据值
configurable:控制属性能否被删除,只有当属性的configurable特性的值为true时,该属性才能够被删除。
默认值为false,即不可删除)
var person = {};
Object.defineProperty(person,"name",{
configurable:false,//不可删除
value:"zhangsan"
})
//将name属性删除
delete person。name;
console.log(person.name);//zhangsan
Object.defineProperty(person,"age",{
configurable:true,//可删除
value:20
})
//将age属性删除
delete person.age;
cosole.log(perso.age);//undefined
//重新定义age属性
person.age = 30;
console.log(person.age);//30
enumerable:控制属性能否被枚举(遍历)。只有当属性的enumrble特性的值为true时,该属性才会出现在对象的枚举属性中。(默认值为false,即不可枚举)
var person = {};
Object.defineProperty(person,"name",{
enumerable:false,//不可枚举
value:"zhangsan"
})
Object.defineProperty(person,"age",{
enumerable:true,//不可枚举
value:20
})
for(let item in person){
console.log(item);//age
}
writable:控制属性能否被修改,只有当属性的writable特性的值为true时,该属性才能够通过赋值运算对属性值进行修改。(默认值为false,即不可修改)
var person = {};
Object.defineProperty(person,"name",{
writable:false,//不可修改
value:"zhangsan"
})
person.name = "lisi";
console.log(person.name);//zhangsan
Object.defineProperty(person,"age",{
writable:true,//可修改
value:20
})
person.age=30;
console.log(person.age);//30
value:设置属性对应的值。可以是任何有效的javaScript值(数值、对象、函数等)。默认值为undefined。
)