博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js-面试题整理
阅读量:4956 次
发布时间:2019-06-12

本文共 2768 字,大约阅读时间需要 9 分钟。

var Foo = function(){                getName = function(){alert(1)};                return this;            }            Foo.getName = function(){alert(2)};            Foo.prototype.getName = function(){alert(3)};            var getName = function(){alert(4)};            function getName(){                alert(5)            };                Foo.getName();            getName();            Foo().getName();            getName();            new Foo.getName();            new Foo().getName();            new new Foo().getName();

 

1.vue 路由跳转后返回,保持页面滚动条行为

   

const router = new VueRouter({  routes: [...],  scrollBehavior (to, from, savedPosition) {    // return 期望滚动到哪个的位置  }})

 2.bind,call,apply 的用法与区别

  bind是返回相对应的函数,稍后执行,call和apply是立即执行,改变this的指向,可以做继承。

function testName (name,age ){    this.name = name;    this.age = age;    this.getName = function(){      console.log(this.name)    }}function childName(){  testName.apply(this,arguments); //继承testName上的所有方法}let getname = new childName('test',25)getname.getName();

 3. 给指定数组去重

function testArr(arr){  var result = new Set(arr); //set 去重  return Array.from(result); }let arr = [1,2,3,2,3,4,1];console.log(testArr(arr));

4.求给定字符串中出现最多的次数

function getMax(str) {      let obj = {};      let maxNum = 0;      let maxStr = '';      for (let i = 0; i < str.length; i++) {        if (!obj[str[i]]) {          obj[str[i]] = 1;          if (obj[str[i]] > maxNum) {            maxNum = obj[str[i]];            maxStr = str[i]          }        } else {          obj[str[i]]++;          if (obj[str[i]] > maxNum) {            maxNum = obj[str[i]];            maxStr = str[i]            console.log(maxNum)          }        }      }      return {        maxNum: maxNum,        maxStr: maxStr      };    }    let str = 'aaaffffasscccvdfffgeerghh';    console.log(getMax(str))

 5.异步的解决方案

  a.settimeout(),延迟加载;b.回掉函数,callback;3.事件监听;4.promise,减少回调地狱,用then,catch。

6.跨域的解决方案

  协议,域名,端口号不同就会存在跨域。"跨域资源共享"(Cross-origin resource sharing)是W3C出的一个标准。兼容性方面可以支持IE8+(IE8和IE9需要使用XDomainRequest对象来支持CORS),所以现在CORS也已经成为主流的跨域解决方案;jsonp(只支持get请求);h5的新api:postMessage();

7.vue-router 的钩子

  beforeEach(to,from,next);afterEach();updateEach()l;组件内的:beforeRouteEnter,beforeRouteUpdate,beforeRouteLeave

8.vue数据双向绑定的原理是什么?

  vue是通过数据劫持结合发布者-订阅者模式的方式,通过object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。(ps:只是劫持data中定义的属性,未被定义的属性,在method中创建时,需要通过this.$set()进行插入)(vue响应式原理)

9.vuex的属性

  state:vuex的变量仓库,定义变量的;

  mutation:定义同步方法;

  action:提交mutation的方式,而不是直接提交,也可用于异步操作,

  getter:相当于computed,返回计算属性的操作直

10.v-if与v-show之间的不同点

  v-if主要是操作DOM的显示和隐藏,v-show主要是改变元素的display的css属性显示隐藏;

11.vue-loader是什么,有什么用途

  vue-loader是vue文件的一个加载器,可以让js写es6语言,style使用less或者scss,template可以加jade等。

12.

转载于:https://www.cnblogs.com/huangmin1992/p/10413672.html

你可能感兴趣的文章
LDAP & implementation
查看>>
iOS - 类扩展与分类的区别
查看>>
AFNetworking 3.0 源码解读(十一)之 UIButton/UIProgressView/UIWebView + AFNetworking
查看>>
启动和停止Java应用程序的Shell脚本
查看>>
CSS选择器之兄弟选择器(~和+)
查看>>
[转]JAVA对象容器
查看>>
使用Spring Boot 和Spring Data JPA访问mysql数据库
查看>>
Syncthing源码解析 - 启动过程
查看>>
python 环境搭建(Mac)
查看>>
隐藏输入法软键盘
查看>>
练习七:列表复制(将一个列表的数据复制到另一个列表中)
查看>>
shell获取本地ip的三种方法
查看>>
百度:人脸登录集成
查看>>
VI使用的小白教程
查看>>
RDD算子
查看>>
从新向你学习javase(第一天)
查看>>
Arduino 9g舵机操作
查看>>
解题报告 逃跑未遂
查看>>
二叉树的遍历算法(js实现)
查看>>
pngcrush caught libpng error: Not a PNG file..
查看>>