js 使用Object.defineProperty为对象定义属性
使用Object.defineProperty为对象添加属性
let person = {name:'name',sex:'male'};
Object.defineProperty(person,'age',{value:18});
- 默认不会被枚举,使用Object.keys(person)将获得[‘name’,‘sex’]。以下写法使之可枚举
Object.defineProperty(person,'age',{value:18,enumerable:true});
- 默认不可修改,使用person.age=19无法修改属性值。以下写法使之可改
Object.defineProperty(person,'age',{value:18,writable:true});
- 默认不可删除,使用delete person.age无法删除属性。以下写法使之可删
Object.defineProperty(person,'age',{value:18,configurable:true});
- 实现属性读写器
let number = 18;
Object.defineProperty(person,'age',{
get() {
return number;
},
set(value) {
number = value;
}
});