类别:vue / 日期:2022-09-26 / 浏览:210 / 评论:0

1、vue2中采用 defineProperty来劫持整个对象,然后进行深度遍历所有属性,给每个属性添加getter和setter,实现响应式。但是存在以下的问题:

  • 检测不到对象属性的添加和删除

  • 数组API方法无法监听到

  • 需要对每个属性进行遍历监听,如果嵌套对象,需要深层监听,造成性能问题

2、proxy:监听是针对一个对象的,那么对这个对象的所有操作会进入监听操作。

总结:

  • Object.defineProperty只能遍历对象属性进行劫持

  • Proxy直接可以劫持整个对象,并返回一个新对象,我们可以只操作新的对象达到响应式目的

  • Proxy可以直接监听数组的变化(push、shift、splice)

  • Proxy有多达13种拦截方法,不限于apply、ownKeys、deleteProperty、has等等,这是Object.defineProperty不具备的

 


版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。

«    2023年11月    »
12345
6789101112
13141516171819
20212223242526
27282930

最新留言