每日五问,Day3

156 阅读1分钟

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的方法
  • 因为方法的查找如果自身找不到会从原型链上查找