区别:
Object.defineProperty是一个用来定义对象的属性或者修改对象现有的属性的函数,,而 Proxy 是一个用来包装普通对象的对象的对象。
Object.defineProperty是vue2响应式的原理, Proxy 是vue3响应式的原理
1)参数不同
Object.defineProperty参数
obj: 要定义属性的对象。
prop: 要定义或修改的属性的名称 。
Proxy 参数
target: 要包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)
2)返回值不同
Object.defineProperty返回值
被传递给函数的对象,就是要定义或修改属性的对象
Proxy 返回值
一个Proxy代理的对象,操作这个对象会触发handler对应操作。改变原始对象不会触发。
3)数据类型不同
Object.defineProperty是函数
Proxy是一个对象