2019-05-05记面试

(1)垂直居中的几种方式

text-align和vertical-align;绝对定位和transform;绝对定位和负外边距;绝对定位和margin:auto;flex布局;table-cell布局

(2)列举几个vue生命周期并说明用处

beforeCreate:加loading事件,在加载实例时触发

created:写初始化完成时的事件,如结束loading事件,异步请求也可以在这里调用

mounted:挂载元素,获取DOM节点

updated:写对数据统一处理的函数

beforeDestroy:写确认停止事件的确认框

nextTick:更新数据后立即操作DOM

(3)组件之间的传值是怎么实现的

父--->子,子组件 :[props]='父data'

子--->父(点击子组件按钮,调用父组件方法),

        子@click='send',methods:send(){ this.$emit('connect',this.msg)}

         父 监听这个$emit事件,@connect = 'say';methods:say(msg){}

同级组件:空的中间实例,实际开发中使用管理状态的vuex

(4)vue路由跳转携带参数query和params有什么不同

query传参:可以传递多个参数,域名/list?name=aaa&pass=bbb;不需要另外配置路由

params传参:只能传一个参数,域名/list/3;需要配置路由

(5)如何刷新vue组件【参考链接https://www.cnblogs.com/yinn/p/9056731.html】

hack方式强制子组件重置到初始状态

this.hackReset = false;

this.$nextTick( () = > {

    this.hackReset = true

})

(6)es6中新增了什么,列举几个说明

let;const常量;箭头函数;解构赋值;剩余参数(...arr);promise(异步);Math(.trunc();.sign());Symbol(解决属性命名的问题);模板字符串(反引号 `${}`,减少很多+)

数组遍历(for of)可以break和continue【for(let value of arr){value是数字类型};for(let index of arr.keys()){数字类型的索引}】

findIndex(-1表示不存在)

(7)es6中的Set和Map有什么不同

Set去重,解构的成员值没有重复的,都是唯一的,解构的键名和键值是同一个值,在Set内部两个NaN是相等的,两个对象总是不相等的。可以用length检测

    四个操作方法: add(value):添加某个值,返回Set结构本身;delete(value):删除某个值,返回一个布尔值,表示删除是否成功;has(value)返回一个布尔值,表示该值是否为Set的成员;clear():清除所有成员,没有返回值;

    set内部元素可以遍历for...of...

Map提供了“值-值”的对应,它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当做键。注意,只有对同一个对象的引用,Map结构才将其视为同一个键。这一点要非常小心。

    如果Map的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map将其视为一个键,包括0和-0。另外,虽然NaN不严格相等于自身,但Map将其视为同一个键。

    实例属性和方法:size、set、get、has、delete、clear

    遍历方法:keys()、values()、entries()、forEach()

(8)js继承的方式都有哪些【https://www.cnblogs.com/humin/p/4556820.html】


(9)vuex是什么,怎么使用,哪种功能场景使用它

vue框架中的状态管理。在main.js中引用store,注入。新建一个目录store,内容包括state,mutation,action。

使用场景:单页应用中,组件之间的状态。音乐播放,登录状态,加入购物车

(10)以下js的打印结果是什么

setTimeout(function(){

console.log(1)

},0);

new Promise(function(a,b){

console.log(2);

for(var i=0;i<10;i++){

i=9 && a ()

}

console.log(3)

}).then(function(){

console.log(4)

});

console.log(5);

答案:23541;因为setTimeout是异步,不管设置多长时间,都是等其他运行结束,它再运行

你可能感兴趣的:(2019-05-05记面试)