和 v-model类似 都会解析成两部分
v-model 是一个语法糖 v-model ="data"会解析成 :value="data" 和@input="data=$event"事件
sync修饰符会解析成两部分 :visible.sync="visible" ---> :visible="visible" 和 @update:visible="visible=$event" 事件
区别:v-model 在组件上 只能使用一次 而 sync可以使用多次
Object.getOwnPropertyDescriptor() ----获取某个对象的属性描述信息
writable修改 删除configurable 枚举enumerable
设置数据(写数据)set(val){} 获取数据(读数据)get(){} ---有返回值 通过外部变量控制数据的读写 ------>简易的数据响应式原理
多层数据的响应式原理:递归
Object.defineProperty() ------------>定义/修改属性值
1--- vue2 中用的是 Object.defineProperty() 进行数据劫持 虽然Object.defineProperty() 支持通过索引对 数组进行监听和修改 但是由于 性能问题 vue2没有采用
且对 对象新增无法劫持 vue 双向绑定的缺陷:数组的下标和长度 无法劫持 对象的新增属性 对象的属性删除的变化 无法劫持 因为已经遍历完了 再修改 无法生效了
2--- Object.defineProperty() 对于数组的push 等修改数组的 方法 不是响应式的(数组本事响应式的方法是不支持的)
但是 vue中 重写了数组的push 等7个方法 支持了修改数组 后 数据的响应式
3------Vue3中采用的 Proxy 来进行数据响应式处理 对对象新增属性可以劫持