数据劫持
- 数据驱动视图
-
- 数据劫持
- 将原始数据 劫持出一份一摸一样, 听起来有点像 浅拷贝
- 劫持出来的数据, 默认是不可以修改的
语法: Object.defineProperty(那个对象, '对象的key', {配置项}
- 配置项:
-
- value 访问这个值 之后, 得到结果
-
- writable 决定当前这个属性能否被修改, 默认是 false
-
- enumerable 决定当前这个属性能否被枚举, 决定当前这个属性能否被遍历到
-
- getter 是一个函数, 是一个获取器, 当访问这个属性时, 会执行这个函数
-
+ getter 不能和 value writable 一起使用 -
- setter 是一个函数, 是一个设置器, 当设置这个属性是, 会执行这个函数
const obj = {}
obj.name = 'QF666'
console.log(obj)
// Object.defineProperty(obj, str, {配置项})
Object.defineProperty(obj, 'age', {
// value: 'QF999',
// writable: true,
enumerable: true,
get() {
// console.log('你当前访问了 这个 age 属性, 触发了 get 函数')
return '123'
},
set(val) {
console.log('你当前想要修改这个 age 属性, 修改的值 是: ', val)
}
})
// console.log(obj)
// for (let k in obj) {
// console.log(k)
// }
console.log(obj.age)
obj.age = 100