在Vue开发的时候,data初始化一个对象没有定义任何属性,经过变量赋值的之后,不需要$set方法,该对象下面的属性就也能变成响应式属性
问题

替换方式新增属性:

能够看到赋值的方式的两个属性被Vue处理成响应式,都有了get,set修饰符

赋值方式新增属性:

可以test3, test4没有get,set修饰符

这就导致了修改test1,test2的属性可以触发视图的更新,而修改test3, test4的属性没有触发视图的更新

接下来看看Vue的内部是怎么处理的:

 <script>    let vm = new Vue({      el: '#app',      data: {        form: {},      },      mounted() {        this.form = {          test1: 1,          test2: 2        }        this.form.test3 = 3        this.form.test4 = 4        console.log(this.form)      }    })  </script>

以上代码为例:

1:vue在初始化的时候,对data定义的属性就行递归响应式处理,由于只定义form,所以form就有了get,set修饰符(这一点很重要)

2: