首页 > 试题广场 >

Vue3 为什么改用 Proxy 实现响应式?Vue2 的

[问答题]
Vue3 为什么改用 Proxy 实现响应式?Vue2 的 defineProperty 有哪些局限?
vue2的defineProperty只针对已知属性的操作,不能对数组下标进行操作,不能对数组进行增删 而vue3改用了Proxy实现响应式,没有上述的限制
发表于 2025-10-20 19:16:06 回复(0)
Vue中的元素Proxy可以对对象/数组的增加删除修改操作做出拦截,然后对些操作做处理,对数据进行更新,重新渲染dom元素做到响应式, Vue2中的Object.defineProperty 只能对初始化的数据属性,元素做出监听,一旦对对象/数组等进行操作,不会重新加载Dom , 无法做到响应式,想要使得数据响应式,得做特殊处理,更为麻烦
发表于 2025-11-24 15:55:09 回复(0)
Vue2 的 defineProperty(旧方法):麻烦多、能力弱,Vue3 的 Proxy(新方法):省心、全能
发表于 2025-11-06 08:50:02 回复(0)
Object.defineProperty:无法监听对象增删;改写数组原型方法手动触发依赖通知;深层递归遍历耗时。 Proxy:支持对象所有基本操作拦截改写;访问到时才深度遍历;不需要 vue.set/vue.delete 增加心智负担。
发表于 2025-09-17 18:42:21 回复(0)
vue2只能拦截已存在的属性,如果要进行新增啊,删除这些操作就需要用$set和$delete进行手动添加。而且他是无法经监听数组下标对这个对象进行赋值以及改变,通常会造成一个视图不更新的现象,而且他是需要深度遍历对象的每一次都要重新写那七个函数,性能会变,慢速度也会变慢。 vue3是一个对象级的响应是。对于增删这些操作进行自动捕获的,不需要我们用$set进行手动添加。而且它使用的是一种懒加载的方式就是你用到哪一层才会进行哪一层的使用,这个时候页面初始化会非常快性能也很好。
发表于 2025-09-17 16:45:00 回复(0)