1.浏览器的静态资源缓存
A:分为强缓存和协商缓存
Q:有什么区别?
2.js判断数据类型的方法
A:typeOf()
Q:typeOf不够严谨,就比如Array用typeof输出出来的是什么?Object,有没有更严谨的方法判断数组类型?
instanceOf
- 用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性
- 可以在继承关系中用来判断一个实例是否属于它的父类型。
3.代码题:用reduce方法重写map
4.插值表达式
{{}}
就是双向绑定的表现形式
5.vue的生命周期
绑定事件应该在哪个生命周期?
在created
1.before create
实例、组件通过new Vue() 创建出来之后会初始化事件和生命周期,然后就会执行beforeCreate钩子函数,这个时候,数据还没有挂载呢,只是一个空壳,无法访问到数据和真实的dom,一般不做操作
2.created
挂载数据,绑定事件等等,然后执行created函数,这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数,在这里可以在渲染前倒数第二次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取
3.before mount
接下来开始找实例或者组件对应的模板,编译模板为虚拟dom放入到render函数中准备渲染,然后执行beforeMount钩子函数,在这个函数中虚拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发updated,在这里可以在渲染前最后一次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取
4.mounted
接下来开始render,渲染出真实dom,然后执行mounted钩子函数,此时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了,可以在这里操作真实dom等事情…
5.before update
当组件或实例的数据更改之后,会立即执行beforeUpdate,然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染,一般不做什么事儿
6.updated
当更新完成后,执行updated,数据已经更改完成,dom也重新render完成,可以操作更新后的虚拟dom
7.before destroy
当经过某种途径调用$destroy方法后,立即执行beforeDestroy,一般在这里做一些善后工作,例如清除计时器、清除非指令绑定的事件等等
8.destroied
组件的数据绑定、监听…去掉后只剩下dom空壳,这个时候,执行destroyed,在这里做善后工作也可以
6.ES6的新增数据类型
symbol ,每次创建的symbol值都是不一样的
7.MVVM的双向绑定
讲了一下响应式,然后写了一段代码让我说数据改变了之后函数是否执行。
得看官方文档:
二面:
1.算法题
s型遍历二叉树
2.上次的双向绑定
{{computeA()}}
{{c}}
{{b}}
data() {
return {
a: 0
}
}
computeA() {
console.log(‘called’)
return a + 1
}
watch
b() {
return this.computeA()
}
问compute和watch哪个执行哪个不执行
Answer:compute不执行,watch执行。因为compute数据没有变化直接走缓存就不重复计算,因此compute不执行,而watch执行。
且getter和setter是compute的属性
3.强缓存和协商缓存的区别
http返回的头:强缓存cache-control
协商缓存last-modified