在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:
发表回复