在vue 中使用 Object.defineProperty() 进行数据劫持有什么缺点?

1: 在对一些属性进行操作的时候,  使用这种方法无法进行拦截,  比如通过下表的方式修改数组或者修改数据或者给对象新增属性,  这些都不可以触发组建的重新渲染。 因为 Object.defineProperty 不能拦截到这些操作。更精确的来说,对于数组而言,大部分操作都是拦截不到的,只是 Vue 内部通过重写函数的方式解决了这个问题。

2: 在 Vue3.0 中已经不使用这种方式了,而是通过使用 Proxy 对对象进行代理,从而实现数据劫持。使用Proxy 的好处是它可以完美的监听到任何方式的数据改变,唯一的缺点是兼容性的问题,因为 Proxy 是 ES6 的语法。

你可能感兴趣的:(前端面试题)