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>

原文地址:https://www.cnblogs.com/xjt31/p/14302218.html