千鋒教育web前端高頻面試題視頻教程,kerwin大話前端面試秘籍(附答案)

1.解釋單向數(shù)據(jù)流和雙向數(shù)據(jù)綁定
對(duì)于Vue來(lái)說(shuō),組件之間的數(shù)據(jù)傳遞具有單向數(shù)據(jù)流這樣的特性稱為單向數(shù)據(jù)流,單向數(shù)據(jù)流(Unidirectional data flow)方式使用一個(gè)上傳數(shù)據(jù)流和一個(gè)下傳數(shù)據(jù)流進(jìn)行雙向數(shù)據(jù)通信,兩個(gè)數(shù)據(jù)流之間相互獨(dú)立,單向數(shù)據(jù)流指只能從一個(gè)方向來(lái)修改狀態(tài)。
而雙向數(shù)據(jù)綁定是指當(dāng)數(shù)據(jù)發(fā)生變化時(shí),視圖也發(fā)生變化,當(dāng)視圖發(fā)生變化,數(shù)據(jù)也會(huì)同步發(fā)生變化。兩個(gè)數(shù)據(jù)流之間相互影響。
2.Object.defineProperty有什么缺點(diǎn)
1.無(wú)法監(jiān)聽(tīng)es6的Set、Map變化;
2.無(wú)法監(jiān)聽(tīng)Class類型的數(shù)據(jù);
3.屬性的添加和刪除也無(wú)法監(jiān)聽(tīng);
4.數(shù)組元素的增加和刪除也無(wú)法監(jiān)聽(tīng)。
3.你知道Vue響應(yīng)式數(shù)據(jù)原理嗎?Proxy與Object.defineProperty優(yōu)劣對(duì)比?
//響應(yīng)式原理:
vue的響應(yīng)式實(shí)現(xiàn)主要是利用了object.defineProperty方法里面的setter與getter方法的觀察者模式來(lái)實(shí)現(xiàn)。在組件初始化時(shí)會(huì)給每一個(gè)data屬性注冊(cè)getter和setter,然后再new一個(gè)自己的Watcher對(duì)象,此時(shí)watcher會(huì)立即調(diào)用組件的render函數(shù)去生成虛擬DOM。在調(diào)用render的時(shí)候,就會(huì)需要用到data的屬性值,此時(shí)會(huì)觸發(fā)getter函數(shù),將當(dāng)前的Watcher函數(shù)注冊(cè)進(jìn)sub里。當(dāng)data屬性發(fā)生改變之后,就會(huì)遍歷sub里所有的watcher對(duì)象,通知它們?nèi)ブ匦落秩窘M件。
//proxy的優(yōu)勢(shì)如下:
Proxy可以直接監(jiān)聽(tīng)對(duì)象而非屬性,可以直接監(jiān)聽(tīng)數(shù)組的變化;
Proxy有多達(dá)13種攔截方法,不限于apply、ownKeys、deleteProperty、has等等s是Object.defineProperty不具備的;
Proxy返回的是一個(gè)新對(duì)象。
//Object.defineProperty 的優(yōu)勢(shì)如下:
兼容性好,支持IE9,而Proxy的存在瀏覽器兼容性問(wèn)題,而且無(wú)法用polyfill(墊片)來(lái)彌補(bǔ)。
4.生命周期
beforeCreate created beforeMount mounted beforeUpdate updated beforeDestory destroyed onUmmounted
beforeDestroy => beforeUnmount
destroyed => unmounted