摘要: 使用 Object.defineProperty() 来进行数据劫持有什么缺点? 在对一些属性进行操作时,使用这种方法无法拦截,比如通过下标方式修改数组数据或者给对象新增属性,这都不能触发组件的重新渲染,因为 Object.defineProperty 不能拦截到这些操作。更精确的来说,对于数组而言 阅读全文
posted @ 2023-02-21 10:23 bb_xiaxia1998 阅读(383) 评论(0) 推荐(0)
摘要: 写在前面 在前端中,主要涉及的基本上就是 DOM的相关操作 和 JS,我们都知道 DOM 操作是比较耗时的,那么在我们写前端相关代码的时候,如何减少不必要的 DOM 操作便成了前端优化的重要内容。 虚拟DOM(virtual DOM) 在 jQuery 时代,基本上所有的 DOM 相关的操作都是由我 阅读全文
posted @ 2023-02-21 10:22 bb_xiaxia1998 阅读(33) 评论(0) 推荐(0)
摘要: DIFF算法的原理 在新老虚拟DOM对比时: 首先,对比节点本身,判断是否为同一节点,如果不为相同节点,则删除该节点重新创建节点进行替换 如果为相同节点,进行patchVnode,判断如何对该节点的子节点进行处理,先判断一方有子节点一方没有子节点的情况(如果新的children没有子节点,将旧的子节 阅读全文
posted @ 2023-02-21 10:22 bb_xiaxia1998 阅读(65) 评论(0) 推荐(0)
摘要: 什么是数据劫持? 定义: 数据劫持,指的是在访问或者修改对象的某个属性时,通过一段代码拦截这个行为,进行额外的操作或者修改返回结果。 简单地说,就是当我们 触发函数的时候 动一些手脚做点我们自己想做的事情,也就是所谓的 "劫持"操作 数据劫持的两种方案: Object.defineProperty 阅读全文
posted @ 2023-02-21 10:20 bb_xiaxia1998 阅读(53) 评论(0) 推荐(0)