-
Object.defineProperty方法
用于给对象添加属性的方法,有三个参数:给那个对象添加属性,属性名,配置对象,那Object.defineProperty与传统的直接定义属性的区别:let person = {
name: '张三',
id: '18'
}
Object.defineProperty(person, 'age', {
value: 18
})
Object.defineProperty定义的属性,浏览器显示如下:
明显person的age属性颜色更淡一点,表示该属性时不可以被枚举(不参与遍历)的
应用:
需求:根据某个变量的值来给某对象增添一个属性,且该属性的值自动随该变量number的值改变而改变,同时属性的值改变number的值也要改变
let number = 19;
let person = {
name: '张三',
id: '18'
}
Object.defineProperty(person, 'age', {
get() {
return number
},
set(value) {
console.log('有人修改了person的age属性,修改值为:', value);
number = value;
}
})
console.log(person)