千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)

Vue和React的响应式原理是什么?
vue会遍历data数据对象,使用Object.definedProperty()的方法getter和setter拦截 ,当数据发生改变的时候,会触发setter方法,通知调用watcher,watcher调用reader函数,进而生成虚拟DOM,新的虚拟DOM对比旧的虚拟DOM,通过diff算法查找他们之间的区别,以最小的代价进行DOM节点的渲染,实现页面的更新操作。
React主要是通过setState方法来更新状态,状态更新之后,组件也会重新渲染。
Proxy与Object.defineProperty的区别?
Object.defineProperty
- 只能监听对象(Object),不能监听数组的变化,无法触发push, pop, shift, unshift,splice, sort, reverse,必须重写数组方法。
- 必须遍历对象的每个属性
- 只能劫持当前对象属性,如果想深度劫持,必须深层遍历嵌套的对象
Proxy
- Proxy可以直接监听对象而非属性
- Proxy直接可以劫持整个对象,并返回一个新对象。
- Proxy可以直接监听数组的变化
- Proxy有多达13种拦截方法,不限于apply、ownKeys、deleteProperty、has等等是Object.defineProperty不具备的。