6、js的數(shù)據(jù)類型
簡單數(shù)據(jù)類型:Number、String、Boolean、 undefined、object、Null
引用類型:Object Array Function
7、面向?qū)ο蟮奶卣鳎悍庋b、繼承、抽象、多態(tài)
8、vue的實(shí)現(xiàn)原理
vue是一個(gè)典型的MVVM框架,模型Model是js對(duì)象,修改它則視圖VIEW自動(dòng)更新。
vue實(shí)現(xiàn)雙向數(shù)據(jù)綁定,需要三大模塊:
Observer:能夠?qū)?shù)據(jù)對(duì)象的所有屬性進(jìn)行監(jiān)聽,如有變動(dòng)可拿到最新值并通知訂閱者
Compile:對(duì)每個(gè)元素節(jié)點(diǎn)的指令進(jìn)行掃描和解析,根據(jù)指令模板替換數(shù)據(jù),以及綁定想要的更新函數(shù)
Watcher:作為鏈接Observer和Compile的橋梁,能夠訂閱并收到每個(gè)屬性變動(dòng)的通知,執(zhí)行指令綁定的相應(yīng)回調(diào)函數(shù),從而更新視圖。
9、vue的生命周期
beforeCreate:組件實(shí)例剛被創(chuàng)建
created:組件實(shí)例創(chuàng)建完成,屬性已綁定,但是DOM還未生成
beforeMount:模板編譯
mounted:掛載
beforeUpdate:
updated:更新
beforeDestroy:實(shí)例銷毀前
destroyed:銷毀
10、防抖 :
(實(shí)例:https://www.cnblogs.com/momo798/p/9177767.html)
在某段時(shí)間內(nèi),不管你觸發(fā)了多少次回調(diào),我都只認(rèn)最后一次。
a:如果在200ms內(nèi)沒有再次觸發(fā)滾動(dòng)事件,那么就執(zhí)行函數(shù)
b:如果在200ms內(nèi)再次觸發(fā)滾動(dòng)事件,那么當(dāng)前的計(jì)時(shí)取消,重新開始計(jì)時(shí)
//防抖例子
functiondebounce(fn,wait){vartimer=null;returnfunction(){varcontext=this,args=arguments;// 如果此時(shí)存在定時(shí)器的話,則取消之前的定時(shí)器重新記時(shí)if(timer){clearTimeout(timer);timer=null;}// 設(shè)置定時(shí)器,使事件間隔指定事件后執(zhí)行timer=setTimeout(()=>{fn.apply(context,args);},wait);};}
節(jié)流:在某段時(shí)間內(nèi),不管你觸發(fā)了多少次回調(diào),我都只認(rèn)第一次,并在計(jì)時(shí)結(jié)束時(shí)給予響應(yīng)。
// 函數(shù)節(jié)流的實(shí)現(xiàn);functionthrottle(fn,delay){varpreTime=Date.now();returnfunction(){varcontext=this,args=arguments,nowTime=Date.now();// 如果兩次時(shí)間間隔超過了指定時(shí)間,則執(zhí)行函數(shù)。if(nowTime-preTime>=delay){preTime=Date.now();returnfn.apply(context,args);}};}