类别:vue / 日期:2023-02-22 / 浏览:340 / 评论:0
1. Object.defineProperty 只能劫持对象的属性,⽽ Proxy 是直接代理对象由于 Object.defineProperty 只能对属性进⾏劫持,需要遍历对象的每个属性。⽽ Proxy 可以直接代理对象。
2. Object.defineProperty 对新增属性需要⼿动进⾏ Observe , 由于Object.defineProperty 劫持的是对象的属性,所以新增属性时,需要重新遍历对象,对其新增属性再使⽤ Object.defineProperty 进⾏劫持。 也正是因为这个原因,使⽤ Vue 给 data中的数组或对象新增属性时,需要使⽤ vm.$set 才能保证新增的属性也是响应式的。
3. Proxy ⽀持13种拦截操作,这是 defineProperty 所不具有的。
4. 新标准性能红利,Proxy 作为新标准,⻓远来看,JS引擎会继续优化 Proxy ,但 getter 和 setter 基本不会再有针对性优化。
5. Proxy 兼容性差 ⽬前并没有⼀个完整⽀持 Proxy 所有拦截⽅法的Polyfifill⽅案
版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。
发表评论 / 取消回复