八股文

149 阅读3分钟
  1. 盒模型 w3c标准盒模型 && IE盒模型
默认是标准盒模型,content-box。

width = content的宽度
height = content的高度
border、padding会撑大盒子

box-sizing: border-box 就是IE盒模型。

width = content + padding + border
height = content + padding + border
border padding不会撑大盒子
  1. bind() call() applay() 改变this指向的方法。
call()和apply()的区别是传参不同
fn.call(obj, 1, 2);
fn.apply(obj, [1, 2]);
bind()和call()的区别是不会立即执行
fn.call(obj, 1, 2); // 改变fn中的this,并且把fn立即执行
fn.bind(obj, 1, 2); // 改变fn中的this,fn并不执行

3.原型、原型链

  1. 作用域
  2. null undefined
null表示定义了一个对象,值为空值
undefined 表示不存在这个值。
区分unll和undefined必须用===
  1. 如何区分数组和对象
Array.isArray
Object.prototype.toString.call([])
Object.prototype.toString.call({})
  1. vuex
  2. 前端权限管理
  3. 闭包的作用:延长变量的生命周期,避免变量的污染
  4. Set Map的区别
1Map是键值对,Set是值得集合,当然键和值可以是任何得值
2Map可以通过get方法获取值,而set不能因为它只有值
3、都能通过迭代器进行for...of 遍历
4Set的值是唯一的可以做数组去重,而Map由于没有格式限制,可以做数据存储

11.项目中的性能优化

js css代码压缩
  1. 数组去重几种方法
  2. 前端登陆流程
 初次登录的时候,前端调后调的登录接口,发送用户名和密码,后端收到请求,验证用户名和密码,验证成功,就给
前端返回一个token,和一个用户信息的值,前端拿到token,将token储存到Vuex中,然后从Vuex中把token的
值存入浏览器Cookies中。把用户信息存到Vuex然后再存储到LocalStroage中,然后跳转到下一个页面,根据后
端接口的要求,只要不登录就不能访问的页面需要在前端每次跳转页面师判断Cookies中是否有token,没有就
跳转到登录页,有就跳转到相应的页面,我们应该再每次发送post/get请求的时候应该加入token,常用方法
再项目utils/service.js中添加全局拦截器,将token的值放入请求头中 后端判断请求头中有无token,有token,
就拿到token并验证token是否过期,在这里过期会返回无效的token然后有个跳回登录页面重新登录
并且清除本地用户的信息。

14.weakset && weakmap

WeakSet的成员只能是对象,不能是其他类型的值。
weakset中的对象都是弱引用,垃圾回收机制不考虑weakset对该对象的引用。也就是说,如果其他对象都不再引用该对象,垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还处于weakset之中。
WeakSet没有size属性不能遍历

常用方法:WeakSet.prototype.add(value)
WeakSet.prototype.delete
WeakSet.prototype.has

WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名
键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收,此时键名是无效的
不能遍历,方法有get、set、has、delete

15.Set常用方法

 const set = new Set([1,2,3])
 set.add('a')
 set.delete('a')
 set.size()
 set.has()
 set.clear()

16.promise

`Promise 不能在返回表达式的箭头函数中设置断点,如果你在.then代码块中设置断点,使用Step Over快捷键,调试器不会跳到下一个.then,因为它只会跳过异步代码`
Promise.all()
里的任务列表[asyncTask(1),asyncTask(2),asyncTask(3)],我们是按照顺序发起的。 但是根据结果来说,它们是异步的,
互相之间并不阻塞,每个任务完成时机是不确定的,尽管如此,所有任务结束之 后,它们的结果仍然是按顺序地映射到resultList里.
Promise.race() 只要有一个实例resolve或者reject,就只返回该结果,其他实例不再执行。