vue2和vue3 面试题

 1.请阐述vue2的响应式原理

简单描述---首先遍历对象的每一个属性然后通过object.defineProperty把每一个属性变成getter和setter 函数,render函数在运行的时候用到了响应式数据于是收集了依赖,当数据变换的时候会通知watcher--watcher会重新运行render函数

深入描述-- 首先把原始对象交给observer 他会把他变成一个响应式对象具有getter和setter,Vue会为响应式对象中的每个属性、对象本身、数组本身创建一个Dep实例突然有一个函数要执行(比如render函数)但是他不是立即执行,他会交给watcher来执行,watcher会设置一个全局变量,让全局变量记录当前负责执行的watcher等于自己然后再去执行函数,在执行的过程中用到了响应式对象的属性,这个属性就会被dep实例收集依赖,如果某个操作改变了数据就会派发更新,通知刚刚记录的watcher,告诉他我变了,watcher不会立即执行这个函数,因为他可能会触发很多次,所以会把自己交给一个调度器,调度器会把这个watcher添加到队列里面,然后会把队列里面的函数交给nextTick,nickTick里面函数都在微队列里面,所以等同步代码执行完了就会进入微队列异步的执行里面的函数,执行到这个watcher的时候,会重新运行render函数

 2.计算属性和方法有什么区别

计算属性本质上是包含getter和setter的方法

你可能感兴趣的:(vue,vue.js,前端,javascript)