阿里外包-爱康面试题

axios和ajax的区别:

  axios通过Promise实现ajax技术进行封装,axios是ajax技术的一部分。

  ajax针对MVC编程,不符合现在流行的MVVM。

  axios从node.js中创建http请求,支持Promise API,客户端支持防止CSRF,提供了一些并发请求的接口。

  注:防止CSRF就是让每个请求都带一个cookie中拿到的key,根据浏览器同源策略,假冒的网站拿不到cookie中的key,这样后台就可以轻松的辨别这个请求是不是假冒网站中的诱导输入,从而白去正确的策略。

map和forEach的区别:

  ①map有返回值,forEach没有返回值

  ②map中return将值返回到新数组中,该新数组和原数组没有引用关系,forEach直接改变原数组

vuex:

  定义:公共状态管理模式

  特点:①多组件共享状态,就是一个变量在所有的组件中都可以使用

     ②一个组件发生改变时,其他组件也会跟着变

  数据传递流程:当组件中修改数据的时候,必须通过store.dispatch来调用actions中的方法,当actions中的方法被触发的时候,通过调用commit中的方法来触发mutations中的方法,mutations中的方法用来修改数据。数据发生改变,触发视图改变。

  常用的5个属性:state、actions、mutations、getters、modules

  分别对应的辅助函数:mapState、mapActions、mapMutations、mapGetters

路由安全卫士:

  全局前置守卫:beforeEach----所有的路由跳转时都会经过这个函数

  路由独享守卫:beforeEnter----在路由配置项中使用,只对当前路由起作用

  组件内部守卫:beforeRouteEnter----进入路由前(当前钩子函数中不能访问到this,场景:登录验证、热力图、权限验证、消息通知)

         beforeRouteUpdate----路由更新时(组件复用时,例如使用动态路由传参,在mounted生命周期中只有第一次能获取到参数,这会造成在详情页的地址栏更换,但页面不变的情况。此时可以用该路由,to.params.id可以获取到参数。另外,watch监听也可以获得参数:newVal.params.id)

         beforeRouteLeave----路由离开时(离开前做一些判断,场景:未支付、未保存、答题系统、退出登录)

js事件机制和浏览器缓存:

事件:

  JavaScript是事件驱动型语言

  绑定事件:addEventListener、attachEvent(ie8)、on方法

  解绑事件:removeEventListener、detachEvent(ie8)

  抛发事件:使用非系统事件时,dispatchEvent(new Event("自定义事件名")),先侦听后抛发

  事件原理:this===e.currentTarget

       e.target===e.srcElement

  事件的三个阶段:捕获、目标、冒泡

  事件委托:也叫事件代理,利用事件冒泡,将同一类型的事件绑定给其父级。

  event对象:e.clientX、e.clientY----视口

         e.pageX、e.pageY----页面

        e.offsetX、e.offsetY----当前对象

        e.layerX、e.layerY----自身和父级无定位时,页面,同e.pageX、e.pageY;自身无定位,父级有定位时或者有overflow:hidden时,父元素;自身无定位时,当前对象,同e.offsetX、e.offsetY

        e.screenX、e.screenY----屏幕

        e.movementX、e.movementY----上一次坐标

        e.type----事件类型

        e.button----0代表左键,1代表中键,2代表右键(ie中:1代表左键,4代表中键,2代表右键)

        e.timeStamp----返回当前事件执行所用的时间(ms)

        阻止事件冒泡:e.stopPropagation(ie8:e.cancelBubble=true)

        阻止浏览器默认事件:e.preventDefault(ie8:e.returnValue:false)

  event事件类型:change、load、error、submit、reset、resize、select、scroll

浏览器缓存:

  cookie、localStorage、sessionStorage  见:https://www.cnblogs.com/wuqilang/p/11204668.html

js如何区分数组和对象:

  ①通过constructor识别:{}.constructor----返回Object,[].constructor----返回Array

  ②通过instance of识别:{} instanceof Array----返回false,[]instanceof Array----返回true

  ③通过Object.prototype.toString.call()识别:Object.prototype.toString.call({})----返回[object Object],Object.prototype.toString.call([])----返回[object Array]

  ④通过ES6中Array.isArray()识别:Array.isArray({})----返回false,Array.isArray([])----返回true

  

  

猜你喜欢

转载自www.cnblogs.com/wuqilang/p/11489298.html