欢迎光临散文网 会员登陆 & 注册

某赞面经+答案

2019-12-15 16:29 作者:Alice铛铛铛  | 我要投稿

1. 画一下原型链? prototype和__proto__有什么区别

摘自《红宝书》

原型链

2. BFC是什么?有哪几种实现方式?适用场景?

摘自:《精通CSS第三版》,3.2.8节

块级格式化上下文规则(BFC),这个规则规定了 1.页面必须自动包含突出的浮动元素2. 所有块级盒子的左边界默认与包含块的左边界对齐。

实现方式:-1 display属性值设置为inline-block或table-cell等的元素,可以为内容创建类似块级的上下文;-2 float属性值不是none的元素;-3 绝对定位的元素;-4 overflow属性值不是visible的元素;

当一个元素具备了触发新块级格式化上下文的条件,并且挨着一个浮动元素时,它就会忽略自己的边界必须接触自己的包含块边界的规则。此时,这个元素会收缩到适当大小,不仅行盒子如此,所有盒子都如此。

BFC遇到float

3.  this指向?如何改变?

    1. 使用箭头函数;

    2. 在函数内部使用_this=this;

    3. 使用apply、call、bind

    4. new实例化一个对象;

在非严格模式下,如果如果函数没有用作构造函数,而是仅仅作为普通函数使用的话,那么函数中的this是指向window的。在严格模式下,this的值就是undefined。


4. 垂直水平居中有哪些方法

方法1:子绝父相,子盒子top、left都50%,再margin-top、-left都是50%的盒子宽高;

方法2:子绝父相,子盒子top、left都50%,用transform: translate(-50%,-50%);;

方法3:flex布局;

方法4:给绝对定位,left、right、top、bottom都给0,margin给auto;方法5:使用table-cell;

5. new实现(摘自红宝书P145)

1. 创建一个新对象;var obj = {};

2. 将构造函数的作用域赋给新对象(用新对象的隐式原型指向构造函数的显式原型obj.__proto__ = ClassA.prototype;,用call改变this指向ClassA.call(obj););

3. 执行构造函数中的代码(为这个新函数添加属性);

4. 返回新对象;


6. 清除浮动有哪些方法(摘自CSS权威指南10.1节、精通CSS 3.2.7)

子盒子浮动导致的父盒子内高度为 0 ,父级盒子不能被撑开,发生高度塌陷的情况。

清除浮动的方法:

1. 给父盒子设置合适的高度;

2. 给父盒子添加样式 overflow:hidden/auto;(这个属性相当于触发BFC,让父级紧贴内容,包括使用了浮动的盒子)

3. 在父盒子里面的子盒子后面添加一个子盒子,如div,添加样式 .clear{ clear:both; };

4. 采用伪元素,给父元素追加:after,给父元素添加一个类.clearfix{content:"";clear:both;}


7. data为什么要用return?(摘自vue官方中文文档)

vue的data必须声明为返回一个函数的形式,是因为组件会被用来创建多个实例对象,如果data只是一个纯粹的对象,会导致所有的实例共享、引用同一个数据对象。通过data函数,使得每次创建新实例,调用data函数,返回初始数据的全新副本对象。


8. vue中的定时器,一般在哪个生命周期中清除

在beforeDestroy()里面清除定时器,clearInterval(this.timer);this.timer = null;


9. vue双向绑定?只知道Object.defineProperty不够

10. 父子传值?vuex、bus,知道eventbus吗?

11.  vue生命周期有哪些?destroy用过吗?

12. vuex请求?原理?

13. 手写代码实现一个eventbus。分别实现三种方法listen监听、trigger触发、remove移除


某赞面经+答案的评论 (共 条)

分享到微博请遵守国家法律