vue对data做了什么?
object,defineProperty
可以给对象添加是属性value,可以给对象添加getter/setter,getter/setter用于对属性的读写进行监控
啥事代理(设计模式)
对myDate对象的属性读写,全权由另一个对象vm负责那么vm就是myData的代理,比如data,偏要vm.n来操作myData,n
vm=new Vue({data:myData})
一,会让vm成为myData的代理(proxy)
二。会对mydata的所有属性进行监控,为什么监控,为了防止mydata的属性变了vm不知道,vm知道了又怎样?,知道属性变了就可以调用render(data) UI=render(data)
数据响应式
什么是响应式,一个物体对外界的刺激做出反应就是响应式
vue的data是响应式:const vm=new vue({data{n:0}})
我如果修改vm.n那么ul中的n就会响应我,vue2通过objec,defineprqerty来实现数据响应式
响应式网页
改变窗口大小,网页就会做出响应,
对象中新增的key
vue没有办法先监听和代理,要使用set来新增key,创建监听和代理,更新ul,最好提前把属性都写出来,不要新增key,但数组做不到【不新增key】
数组中新增的key
也可以用set来新增key,更新ul
不过由于系篡改了7个api方便你对数组进行增删
这7个api会处理监听和代理,并更新ul
结论:数组新增key最好通过7个api
响应式原理
会被vue监听,会被vue实列代理,每次对data的读写都会被vue监控,vue会在data变化时更新ui