vue2的响应式原理的核心:
*对象是通过defineProperty对对象已有属性通过读取和修改进行劫持(监视/拦截)
*数组:通过重写数组更新数组一系列更新元素的方法来实现元素修改的劫持。
问题:对象直接添加的属性或删除已有属性,界面不会更新。数组直接通过下标替换换上或者更新length,界面不会自动更新。
vue3的响应式:
核心:
*通过proxy(代理)拦截对data任意属性的任意操作,包括属性值的读写,属性值的添加,属性的删除等
*通过reflect反射对象。它是不能new的,因为它不是一个构造函数。它动态的对被代理的对象的相应属性进行特定的操作。