vue2 响应式原理看这 链接: link
总结: object.defineproperty()是对属性的劫持,对属性劫持有两大缺陷
1. 需要遍历对象的所有属性,深层属性需递归,存在效率问题
2. 后添加的属性,无法获得响应式,因为劫持是初始化时完成的
vue3 响应式原理
proxy:
- 代理的是对象,无需遍历属性,读取代理对象的属性时,就会触发get,set
- 只有读取到某个对象的属性,才会创建代理对象,深层对象也是,所以初始化效率高,不用一上来就递归所有深层对象。
vue3最主要的区别就是在这,其他思想和vue2 一样。