东莞网站建设策划,开发者模式要不要开,万户做网站如何,电子商务网站建设规划报告书原理应用优缺点vue2使用Object.defineProperty()来劫持各个属性的setter/getter#xff0c;在数据发生改变时通知订阅者更新视图 1.无法检测对象属性的删除和添加 2.无法检测数组内部的变化#xff0c;vue2通过重写数组的方法来实现数组的响应式 3.需要遍历整个对象#xff…原理应用优缺点vue2使用Object.defineProperty()来劫持各个属性的setter/getter在数据发生改变时通知订阅者更新视图 1.无法检测对象属性的删除和添加 2.无法检测数组内部的变化vue2通过重写数组的方法来实现数组的响应式 3.需要遍历整个对象如果对象嵌套太深需要递归遍历性能下降 vue3使用Proxy来劫持整个对象从而实现响应式 1.可以监听数组对象的变化不需要遍历整个对象性能更好 2.ref API可以监听基本数据类型的变化 vue2常见的问题改变数据不更新视图这是因为vue2响应式机制的实现vue2受限于object.defineProperty需要通过辅助方法弥补例如Vue.$set vue2使用object.defineProperty实现响应式仅对对象初始化时的属性进行监听如果新增或删除未被定义的setter/getter就无法触发视图更新 解决方案 新增属性使用this.$set(对象, 属性, 属性值); 删除属性使用this.$delete(对象, 属性); 整体替换this.obj { ...对象, 属性: 属性值 }; Vue3通过Proxy提供了更完善的响应式支持。