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

1.解釋單向數(shù)據(jù)流和雙向數(shù)據(jù)綁定
對于 Vue 來說,組件之間的數(shù)據(jù)傳遞具有單向數(shù)據(jù)流這樣的特性稱為單向數(shù)據(jù)流,單向數(shù)據(jù)流(Unidirectiona1data fow) 方式使用一個上傳數(shù)據(jù)流和一個下傳數(shù)據(jù)流進行雙向數(shù)據(jù)通信,兩個數(shù)據(jù)流之間相互獨立,單向數(shù)據(jù)流指只能從一個方向來修改狀態(tài)。
而雙向數(shù)據(jù)綁定即為當(dāng)數(shù)據(jù)發(fā)生變化的時候,視圖也就發(fā)生變化,當(dāng)視圖發(fā)生變化的時候,數(shù)據(jù)也會跟著同步變化,兩十?dāng)?shù)據(jù)流之間互為影響。
2.Object.defineProperty有什么缺點
1、無法監(jiān)聽es6的Set、Map 變化:
2、無法監(jiān)聽class類型的數(shù)據(jù):
3、屬性的新加或者刪除也無法監(jiān)聽:
4、數(shù)組元素的增加和刪除也無法監(jiān)聽。
3.vue的響應(yīng)式原理
vue的響應(yīng)式實現(xiàn)主要是利用了object.defineproperty的方法里面的setter 與getter方法的觀察者模式來實現(xiàn)。在組件初始化時會給每一個data屬性注冊etter和setter,然后再new 一個自己的watcher對象,此時watcher會立即調(diào)用組件的render函數(shù)去生成虛擬DOM,在調(diào)用render的時候,就會需要用到data的屬性值,此時會觸發(fā)getter函數(shù),將當(dāng)前的watcher函數(shù)注冊進sub里,當(dāng)data屬性發(fā)生改變之后,就會遍歷sub里所有的watcher對象,通知它們?nèi)ブ匦落秩窘M件。