1.js call()/apply()/bind()的理解
他们都是用来改变this指向的,他们所接受的第一个参数都是所要指向的那个对象,apply接受的其他参数存放在一个数组中,bind和call的其他参数是用‘,’隔开,bind返回一个新的函数需要调用,后面需要跟一个()。
2.回答一下常见的http状态码
- 304:服务器允许访问但未满足条件,不会返回响应的主体部分
- 403:服务器拒绝访问,可能是未获得授权
3.说下单页应用和多页应用以及404页面设置
- 单页应用是指只有一个html页面,通过vue-router来实现组件的切换,页面切换快,用户体验好,首屏加载慢,不利于seo
- 多页应用是指多个独立的html页面,需要通过后台返回html页面,需要单独请求每个页面所需要的资源,切换页面会比较慢,页面无法公用,首屏加载快,利于seo
- 在router文件下创建404路由,设置通配符匹配规则,存放与router的最底部,当访问所有的路由存在错误的情况下重定向到404页面
4.说一下深拷贝和浅拷贝
- 浅拷贝是只拷贝数据对象的第一层,深层次的数据值和原始数据值互相影响,常见的比如:Object.assign({}, obj), 扩展运算符
- 不管对象数据有多少层,改变拷贝后的值都不会影响原始数据,Json.parse()、Json.Stringify()
5.vue首屏优化
- 路由懒加载
- cdn加速
- 配置Gzip进行打包压缩
6.什么是路由懒加载
在访问到当前页面时才会加载相关资源,异步分模块加载文件
7.说一下节流防抖
- 防抖:时间在触发n秒后执行函数回调,如果这个n秒内事件再次触发,则重新计时
- 节流:规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效
8.说一下箭头函数和普通函数的区别
箭头函数里面的this永远指向定义时它所在的上层作用域,无法通过call、bind、apply修改