Vue2.x的响应式
实现原理:
对象类型:通过 Object.defineProperty() 对属性进行读取,修改进行拦截(数据劫持)
数组类型:通过重写更新数组的一系列方法来实现拦截。(对数组的变更进行了包裹)
存在问题:
1.对象中通过 object.sex = "male' 新增属性页面不会更新,Vue监测不到,必须通过 this.$set(this.obj, 'sex', 'male') 或 Vue.set(this.obj, 'sex', 'male') 对对象进行添加属性,页面才会更新
2.对象中通过 delete object.sex 删除属性页面不会更新,Vue监测不到,必须通过 this.$delete(this.obj, 'sex') 或 Vue.delete(this.obj, 'sex') 对对象进行添加属性,页面才会更新
3.数组中,直接通过下标修改数组,界面不会自动更新,必须通过