每日五问,Day3
vue的数据绑定机制是如何实现的?
- object.defineProperty 进行修改data数据的 setter和getter
- 模版编译成render函数, 函数执行会触发getter进行依赖收集
- data更新后只有被收集后的依赖才会被更新试图
vue的computed和watch的区别?
- computed 是由一个数据经过计算得出的一个新值
- watch 由一个值的变更进行一些操作
说下vue的keep alive
- keep alive 用作缓存组件状态的一个组件
- 会先判断是否 没有命中 include 和 命中 exclude 直接放回vnode
- 如果没有命中上面步骤就会进行缓存
- 组件首次渲染和正常无异
- 缓存渲染返回的是vnode.componentInstance
vue next tick实现原理
- nextTick 内部也是通过定时器,promise等去实现的异步, 具体用哪个根据浏览器择优选择
- 传递nextTick的回调会先被推入callbacks的数组中
- 然后执行定时器, 传入一个函数
- 这个函数会去copy callbacks并且清空然后执行
- 这样做主要保证了多个nextTick可以在同一个tick中执行
解释一下原型链
- 假设 a = []
- a的__proto__ === Arrary.prototype
- Arrary.prototype.proto === Object.prototype
- 所以a能调用Array的方法和Object的方法
- 因为方法的查找如果自身找不到会从原型链上查找