随便写点面试题(三)结束

13.数组的方法
var myMap = new Map();  map 返回形式为 [key,value]
fliter   返回的是 删除的数组 改变原数组  

reducer 函数接收4个参数:  
      1.Accumulator (acc) (累计器)
2.Current Value (cur) (当前值)
3.Current Index (idx) (当前索引)
4.Source Array (src) (源数组)
用法 arr.reduce(callback[, initialValue])
new Set([iterable]);   Set中的元素只会出现一次,即 Set 中的元素是唯一的。
shift() 删下标为0的那个元素
pop() 删最后一个元素
 indexof() 获取下标

随便写点面试题(三)结束_第1张图片


slice很强大的数组方法,它有很多种用法,可以实现删除、插入和替换。
删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。例如, splice(0,2)会删除数组中的前两项。
插入:可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、 0(要删除的项数)和要插入的项。例如,splice(2,0,4,6)会从当前数组的位置 2 开始插入4和6。
替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。例如,splice (2,1,4,6)会删除当前数组位置 2 的项,然后再从位置 2 开始插入4和6。
splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项,如果没有删除任何项,则返回一个空数组。 

14.es6 用过哪些 实际举例

15.两个数组怎么拼接在一起
1、concat
var c = a.concat(b)

2.for循环
for(var i in b){
  a.push(b[i]);
}

3.apply
a.push.apply(a,b);


16.项目上线的问题

17.登录怎么知道登录了 不会再一次请求
登录的时候服务器端给前端一个令牌(token),后面用户所有的操作都要带token去验证是否是登录状态 
18.axios  看下拦截器 导航守卫
首先,在vue-cli项目的src路径下新建一个axios文件夹,在axios文件夹里新建api.js和request.js,api.js用于写接口,对axios的封装写在request.js里,项目机构如图:

随便写点面试题(三)结束_第2张图片

然后开始统一封装axios, 首先引入axios、qs依赖,引入main.js主要是用于后面对接口进行统一处理,比如调接口的时候,显示loading等。这个main.js根据你个人情况,可加可不加。

随便写点面试题(三)结束_第3张图片

然后创建一个axios实例,这个process.env.BASE_URL在config/dev.evn.js、prod.evn.js里面进行配置:

axios实例创建好之后,开始使用request拦截器对axios请求配置做统一处理,具体如下:

随便写点面试题(三)结束_第4张图片

随便写点面试题(三)结束_第5张图片
然后是对response做统一处理,代码如下:

随便写点面试题(三)结束_第6张图片


最后,将我们的axios实例暴露出去,整个axios的封装就写完了。


实现深拷贝的方法
1、使用递归的方式实现深拷贝
//使用递归的方式实现数组、对象的深拷贝
function deepClone1(obj) {
  //判断拷贝的要进行深拷贝的是数组还是对象,是数组的话进行数组拷贝,对象的话进行对象拷贝
  var objClone = Array.isArray(obj) ? [] : {};
  //进行深拷贝的不能为空,并且是对象或者是
  if (obj && typeof obj === "object") {
    for (key in obj) {
      if (obj.hasOwnProperty(key)) {
        if (obj[key] && typeof obj[key] === "object") {
          objClone[key] = deepClone1(obj[key]);
        } else {
          objClone[key] = obj[key];
        }
      }
    }
  }
  return objClone;
}
*2、通过 JSON 对象实现深拷贝**
//通过js的内置对象JSON来进行数组对象的深拷贝
function deepClone2(obj) {
  var _obj = JSON.stringify(obj),
    objClone = JSON.parse(_obj);
  return objClone;
3、通过jQuery的extend方法实现深拷贝
var array = [1,2,3,4];
var newArray = $.extend(true,[],array);

13、闭包有哪些缺点?有哪些优点?
闭包是有权访问另一个函数私有变量的函数叫闭包;
优点:避免变量污染、加强了封装性,逻辑性比较强代码的可读性高;加载到内存中执行效率高;
缺点:在内存中,造成了内存浪费,如果滥用闭包是灾难性的;

随便写点面试题(三)结束_第7张图片

 

什么是BFC?
BFC:块级格式化上下文,它是指一个独立的块级渲染区域,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。在进行盒子元素布局的时候,BFC提供了一个环境,在这个环境中按照一定规则进行布局不会影响到其它环境中的布局。

你可能感兴趣的:(js,Vue)