某贊面經(jīng)+答案

1.?畫一下原型鏈??prototype和__proto__有什么區(qū)別
摘自《紅寶書》

2.?BFC是什么?有哪幾種實(shí)現(xiàn)方式?適用場(chǎng)景?
摘自:《精通CSS第三版》,3.2.8節(jié)
塊級(jí)格式化上下文規(guī)則(BFC),這個(gè)規(guī)則規(guī)定了 1.頁(yè)面必須自動(dòng)包含突出的浮動(dòng)元素2. 所有塊級(jí)盒子的左邊界默認(rèn)與包含塊的左邊界對(duì)齊。
實(shí)現(xiàn)方式:-1?display屬性值設(shè)置為inline-block或table-cell等的元素,可以為內(nèi)容創(chuàng)建類似塊級(jí)的上下文;-2?float屬性值不是none的元素;-3?絕對(duì)定位的元素;-4?overflow屬性值不是visible的元素;
當(dāng)一個(gè)元素具備了觸發(fā)新塊級(jí)格式化上下文的條件,并且挨著一個(gè)浮動(dòng)元素時(shí),它就會(huì)忽略自己的邊界必須接觸自己的包含塊邊界的規(guī)則。此時(shí),這個(gè)元素會(huì)收縮到適當(dāng)大小,不僅行盒子如此,所有盒子都如此。

3.??this指向?如何改變?
????1. 使用箭頭函數(shù);
????2. 在函數(shù)內(nèi)部使用_this=this;
????3. 使用apply、call、bind
????4. new實(shí)例化一個(gè)對(duì)象;
在非嚴(yán)格模式下,如果如果函數(shù)沒(méi)有用作構(gòu)造函數(shù),而是僅僅作為普通函數(shù)使用的話,那么函數(shù)中的this是指向window的。在嚴(yán)格模式下,this的值就是undefined。
4.?垂直水平居中有哪些方法
方法1:子絕父相,子盒子top、left都50%,再margin-top、-left都是50%的盒子寬高;
方法2:子絕父相,子盒子top、left都50%,用transform: translate(-50%,-50%);;
方法3:flex布局;
方法4:給絕對(duì)定位,left、right、top、bottom都給0,margin給auto;方法5:使用table-cell;
5.?new實(shí)現(xiàn)(摘自紅寶書P145)
1. 創(chuàng)建一個(gè)新對(duì)象;var obj = {};
2. 將構(gòu)造函數(shù)的作用域賦給新對(duì)象(用新對(duì)象的隱式原型指向構(gòu)造函數(shù)的顯式原型obj.__proto__ = ClassA.prototype;,用call改變this指向ClassA.call(obj););
3. 執(zhí)行構(gòu)造函數(shù)中的代碼(為這個(gè)新函數(shù)添加屬性);
4. 返回新對(duì)象;
6.?清除浮動(dòng)有哪些方法(摘自CSS權(quán)威指南10.1節(jié)、精通CSS 3.2.7)
子盒子浮動(dòng)導(dǎo)致的父盒子內(nèi)高度為 0 ,父級(jí)盒子不能被撐開(kāi),發(fā)生高度塌陷的情況。
清除浮動(dòng)的方法:
1. 給父盒子設(shè)置合適的高度;
2. 給父盒子添加樣式 overflow:hidden/auto;(這個(gè)屬性相當(dāng)于觸發(fā)BFC,讓父級(jí)緊貼內(nèi)容,包括使用了浮動(dòng)的盒子)
3. 在父盒子里面的子盒子后面添加一個(gè)子盒子,如div,添加樣式 .clear{ clear:both; };
4. 采用偽元素,給父元素追加:after,給父元素添加一個(gè)類.clearfix{content:"";clear:both;}
7.?data為什么要用return?(摘自vue官方中文文檔)
vue的data必須聲明為返回一個(gè)函數(shù)的形式,是因?yàn)榻M件會(huì)被用來(lái)創(chuàng)建多個(gè)實(shí)例對(duì)象,如果data只是一個(gè)純粹的對(duì)象,會(huì)導(dǎo)致所有的實(shí)例共享、引用同一個(gè)數(shù)據(jù)對(duì)象。通過(guò)data函數(shù),使得每次創(chuàng)建新實(shí)例,調(diào)用data函數(shù),返回初始數(shù)據(jù)的全新副本對(duì)象。
8.?vue中的定時(shí)器,一般在哪個(gè)生命周期中清除
在beforeDestroy()里面清除定時(shí)器,clearInterval(this.timer);this.timer = null;
9.?vue雙向綁定?只知道Object.defineProperty不夠
10.?父子傳值?vuex、bus,知道eventbus嗎?
11.??vue生命周期有哪些?destroy用過(guò)嗎?
12.?vuex請(qǐng)求?原理?
13.?手寫代碼實(shí)現(xiàn)一個(gè)eventbus。分別實(shí)現(xiàn)三種方法listen監(jiān)聽(tīng)、trigger觸發(fā)、remove移除