# fed-e-task **Repository Path**: sryily1314/fed-e-task ## Basic Information - **Project Name**: fed-e-task - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-28 - **Last Updated**: 2021-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1、当我们点击按钮的时候动态给 data 增加的成员是否是响应式数据,如果不是的话,如果把新增成员设置成响应式数据,它的内部原理是什么。 let vm = new Vue({ el: '#el' data: { o: 'object', dog: {} }, method: { clickHandler () { // 该 name 属性是否是响应式的 this.dog.name = 'Trump' } } }) 不是,通过Object.defineProperty()对其进行监听,设置set,get来动态改变,点击按钮时并未触发dog的setter方法,也就无法触发walk进行遍历对其添加get,set属性,无法成为响应式数据 2、请简述 Diff 算法的执行过程 通过调用patch函数进行新老节点的比较,从而进行dom树的更新 调用diff算法对新旧节点dom1,dom2进行对比,逐层解析补丁包类型加入到队列中 如果有子节点则递归进行遍历对比,直至无子节点,结束递归,得到待处理的补丁包,通过对该包的逐层解析完成dom的更新