因为 new Vue 构造函数执行时候vue就使用object.defineproperty的set 和get 属性进行了双向绑定,data中的数据必须事先定义好才能监听到,所以要想自定义往data中添加数据并且是响应式的 就要使用vue内部基于 object.defineproperty封装的 vue.set()方法。
Vue.set(target, key/index, value) 向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.obj.newProperty = 'hi')
https://www.cnblogs.com/goloving/p/10986120.html