1.call()和aplly()方法基本一致 只是注意使用 传入实参的时候 call 直接传入就可以
apply需要注意将实参放入数组后 再传入
bind() 方法需要注意的点就是 它会将改变指向 后需要被接收一下
2.hash与history的区别
hash模式的URL中会夹杂着#号,而history没有。hash模式是依靠onhashchange事件(监听location.hash的改变)
history模式是主要是依靠的HTML5 history中新增的两个方法,pushState()可以改变url地址且不会发送请求,replaceState()可以读取历史记录栈,还可以对浏览器记录进行修改。
3.什么是原型?什么是原型链?
原型:每个函数或对象都有prototype属性,他被默认成一个对象即原型对象
原型链:当对象使用属性的时候,先在自身进行查找,有就直接使用,然后在当前属性中查找,如果没有就会沿着proto属性继续往下找,直到Object原型对象,这就是原型链
4. 单向数据绑定和双向数据绑定
单向数据流: 顾名思义,数据流是单向的。数据流动方向可以跟踪,流动单一,追查问题的时候可以更快捷。缺点就是写起来不太方便。
双向数据:数据之间是相通的,将数据变更的操作隐藏在框架内部。优点是在表单交互较多的场景下,会简化大量业务无关的代码。缺点就是无法追踪局部状态的变化,增加了出错时 bug 的难度
5.v-if与v-show的区别
v-if 是根据后面的参数决定是否渲染和销毁当前的元素节点,他后面的参数如果为false当前元素就不会被创建,它的切换开销大
v-show 后面的参数不管你是false还是true都会创建元素节点,如果是false他会把这个元素节点的display属性设置成none 如果是true会删除display属性
6.说说你对防抖与节流的了解
防抖:触发事件后在n秒内函数只能执行一次,如果在n秒内又触发了事件,则会重新计算函数执行时间。
节流:当持续触发事件时,保证隔间时间触发一次事件。
7.
map 方法会迭代数组中的每一个元素,并根据回调函数来处理每一个元素,最后返回一个新数组
reduce 用来迭代一个数组,并且把它累积到一个值中。
reduce需要传入两个参数,用来代表数组中的值
filter 方法用来迭代一个数组,并且按给出的条件过滤出符合的元素。
filter 方法传入一个回调函数,这个回调函数会携带一个参数,参数为val 。回调函数返回 true 的项会保留在数组中,返回 false 的项会被过滤出数组
8.vue组件中的data 定义必须是一个函数?
如果data是对象的话,由于对象是引用类型,组件被复用的话,就会创建多个实例。本质上,这些实例用的都是同一个构造函数。这样就会影响到所有的实例,所以为了保证组件不同的实例之间data不冲突,data必须是一个函数。
9. this.router.push()与this.router.push()与this.router.push()与this.router.replace()的区别
this.$router.push() 跳转到不同的url,但这个方法会向history栈添加一个记录,点击后退会返回到上一个页面。
this.$router.replace()同样是跳转到指定的url,但是这个方法不会向history里面添加新的记录,点击返回,会跳转到上上一个页面。上一个记录是不存在的。