面试可能会用到?

1、使用new操作符的时候都做了什么?

(1)先创建一个新对象

(2)将构造函数的作用域赋给新对象

(3)执行构造函数中的代码

(4)返回新对象

2、为什么在vue组件中data都是用一个function返回对象呢?

因为组件可能被用来创建多个实例,如果data是一个纯粹的对象,那么所有的实例都将共享引用同一个数据对象。也就是说如果两个实例同时引用一个data对象,那么当我们修改其中一个实例的属性时,另外一个也会随之更改。所以要用函数模式创建自己的作用域。

3、vue中methods和computed的区别

compued计算属性是将计算属性的方法和data中的值进行绑定,只有当data中的值发生变化的时候才会触发computed方法。

methods是每次进入页面都要执行该方法。

4、位置相关

position: absolute;
top: 50%;
left: 50%;

此种方式是根据屏幕整体的位置进行移动的

transform: translate(50%,50%)

此种方式是根据元素的宽高进行移动的

5、给元素设置display:"inline-block";元素间会有间隙,怎么处理?

1、给元素浮动,间隙就会消失。

2、给元素父级设置font-size:0;间隙就会消失。

3、不要将元素进行换行操作。例如<div></div><div></div>两个div在同一行而不是用回车进行换行也可以消除间隙。

6、vue-Router原理,解释(浅薄)

单页面应用(spa)的核心之一是:更新视图而不重新请求页面。

能实现这一点主要就是通过两种方式:

1、通过改变hash值

2、利用history对象新特性

在vue-Router中,使用mode参数来决定采用哪一种方式。

默认是通过hash的方式,如果浏览器支持history新特性就用history,如果不在浏览器环境则使用abstract。

选好mode后创建history对象(hashHistory或HTML5History或AbstractHistory)

7、前端优化?

1、减少http请求数

2、使用css sprites

3、舍弃@import来引入css而要选择link标签

4、先选择‘离线更新节点’,之后再添加到dom树上

5、不要使用html来缩放图片,用多大的图尽量就让ui切多大的图

6、使用cdn加速

7、静态文件设置Expires永不失效,动态文件用合适的Cache-ControlHTTP头来让浏览器进行条件性的请求

8、sessionStorage 、localStorage 和 cookie 之间的区别

1、cookie数据始终在同源的http中请求携带(即使不需要),单条cookie的存储量不能超过4kb,因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标示。

2、而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大

3、数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭

4、作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。

9、很多人都答不上的题。

console.log(a);//打印结果:function a(){console.log(10)}
a();//打印结果:10
var a = 3;
function a() {
    console.log(10)
}
console.log(a);//打印结果3
a = 6;
a();//报错 a is not a function
//之所以会报错,是因为函数a已经被重新赋值,并不是一个函数了
function a(){
    console.log(10);
}
//上面这种方式可以转化为
var a = function(){
    console.log(10);
}
//由此可以看出,变量的赋值是比函数的赋值是优先的。

10、面试经常让布局左右定宽中间自适应的布局

<style>
.a{
    float:left;
    width:200px;
    height:200px;
    background:green;
}
.b{
    float:right;
    width:200px;
    height:200px;
    background:green;
}
.c{
    margin:0 200px;
    height:500px;
    background:yellow;
}
</style>
<div class="a"></div>
<div class="b"></div>
<div class="c"></div>
<style>
.a{
    position: absolute;
    top: 0;
    left: 0;
    width: 200px;
    height: 500px;
    background: yellow;
}
.b{
    position: absolute;
    top: 0;
    right: 0;
    width: 200px;
    height: 500px;
    background: yellow;
}
.c{
    margin: 0 200px;
    height: 50        0px;
    background: green;
}
</style>
<div class="a">左侧div</div>
<div class="b">右侧div</div>
<div class="c">中间div</div>

猜你喜欢

转载自blog.csdn.net/mofigg/article/details/81191067