Object.defineProperty() 可以直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象
声明一个对象
let person = {
name: '小明',
sex: '男',
// age: 18
}
首先 使用`Object.defineProperty()这个方法给person对象添加age属性
Object.defineProperty()接收3个参数
1.给谁添加属性 2.添加的属性名 3.其他配置项
这个时候控制台打印perosn 发现age属性已经添加上去了
此时可以用for遍历一下这个对象
console.log('@', person[key]) //@小明 @男
}
发现只打印了源数据 并没有打印出添加的age属性,于是得出结论 age属性不可被枚举(遍历)
如果想要让这个属性可遍历 此时可以添加一个配置项:enumerable: true
如果想删除age属性的话: delete person.age
如果返回false 说明删除失败 这个时候再添加一个配置项 让age属性可以被删除:configurable: true
Object.defineProperty()方法有两个函数 一个是get 另一个是set 当修改age属性时 set函数会被调用 此时set会接收到一个参数value 这个参数表示修改后的值