1.20 测试嵌套对象使用Object.defineProperty是否有效?
<script>
  const obj = {
    name: 'xjt',
    //嵌套对象obj2
    obj2: {
      name2: 'xjt2'
    }
 //封装 Object.defineProperty()
  function defineReactive(target, key, val) {
    Object.defineProperty(target, key, {
      get() {
        console.log('get:name属性被读取了');
        return val
      },
      set(newValue) {
        console.log('set:name属性被改变了');
        if (val === newValue) {
          return
        }
        val = newValue
      }
    })
  }
  defineReactive(obj.obj2, 'name2', 'xjt000')
  console.log(obj.obj2.name2); //get:name属性被读取了  //xjt000  
  //测试结果:obj.obj2的name2属性可以被监听,因此可以通过递归方式对嵌套对象的属性进行数据劫持
</script>

 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号