持续更新中...
记录一下面试被问到的问题,顺便回顾一下知识点。
02.05 17:00
this.$nextTick
- 参考
- 将回调延迟到下次 DOM 更新循环之后执行。状态改变后页面不会立即改变,而是等到下一次更新才会改变。
- 在Vue生命周期的created()钩子函数进行的DOM操作一定要放在Vue.nextTick()的回调函数中
- 在数据变化后要执行的某个操作,而这个操作需要使用随数据改变而改变的DOM结构的时候,这个操作都应该放进Vue.nextTick()的回调函数中。
- 内部实现,先判断是否原生支持promise,如果支持,则利用promise来触发执行回调函数;否则,如果支持MutationObserver,则实例化一个观察者对象,观察文本节点发生变化时,触发执行所有回调函数;如果都不支持,则利用setTimeout设置延时为0。
<keep-alive>
- 参考
- 当组件在 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行
- 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在组件的父组件链中
- include - 字符串或正则表达式。只有名称匹配的组件会被缓存
- exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存
Promise.all()
- 只有p1、p2、p3的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值组成一个数组,传递给p的回调函数
- 只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。
- 如果作为参数的 Promise 实例,自己定义了catch方法,那么它一旦被rejected,并不会触发Promise.all()的catch方法。
Vue 生命周期
- beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed
- ajax 请求一般在created中
sass Mixin 混合指令
- 定义可重复使用的样式,避免了使用无语意的 class
- @mixin 定义混合;@include 引用混合
原型链和闭包
- 原型链参考
- 一个类型的原型又是另一个类型的实例
- 闭包参考
- 闭包造成内存泄漏问题的解决办法
let、const、var 区别
- 参考
- let、const不存在变量提升、不允许重复声明、块级作用域