数据劫持

54 阅读1分钟

数据劫持

  • 数据驱动视图
    1. 数据劫持
  • 将原始数据 劫持出一份一摸一样, 听起来有点像 浅拷贝
  • 劫持出来的数据, 默认是不可以修改的

语法: Object.defineProperty(那个对象, '对象的key', {配置项}

  • 配置项:
    1. value 访问这个值 之后, 得到结果
    1. writable 决定当前这个属性能否被修改, 默认是 false
    1. enumerable 决定当前这个属性能否被枚举, 决定当前这个属性能否被遍历到
    1. getter 是一个函数, 是一个获取器, 当访问这个属性时, 会执行这个函数
  •  + getter 不能和 value    writable   一起使用
    
    1. 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