1.怎么理解es6箭頭函數(shù)中的this,它和一般函數(shù)的this指向有什么區(qū)別呢?
在箭頭函數(shù)中沒(méi)有自己的this,它的this繼承自外部函數(shù)的作用域,它是固定的,在箭頭函數(shù)中,函數(shù)體內(nèi)的this對(duì)象,就是定義時(shí)所在的對(duì)象,而不是使用時(shí)所在的對(duì)象,箭頭函數(shù)也有兼容問(wèn)題,要是兼容低版本ie,需要使用babel編譯,并且引入es5-shim.js才可以。
在普通函數(shù)中,this指向windows窗口;在構(gòu)造函數(shù)時(shí),this指向?qū)嵗膶?duì)象;在事件中,this指向被觸發(fā)的對(duì)象;在方法中,this指向調(diào)用方法的對(duì)象。
在定時(shí)器中,方法是定義在window下的,this也是指向windows,可以在外部函數(shù)中將this存為一個(gè)變量,回調(diào)函數(shù)中使用該變量,而不是直接使用this,或者使用bind()方法,(call和apply是修改this指向后函數(shù)會(huì)立即執(zhí)行,就失去了定時(shí)器的作用)而bind則是返回一個(gè)新的函數(shù),它會(huì)創(chuàng)建一個(gè)與原來(lái)函數(shù)主體相同的新函數(shù),新函數(shù)中的this指向傳入的對(duì)象。
2.vue如何解決跨域問(wèn)題
jsonp不能發(fā)post請(qǐng)求,不管是否跨域,只要用jsonp方式就只能是get,因?yàn)楸举|(zhì)是script方式加載的;
vue-resource的jsonp按照文檔直接調(diào)就可以了;
后端在respons header里設(shè)置Access-Control-Allow-Origin "",允許來(lái)自的跨域。
3.vue路由實(shí)現(xiàn)及原理
(1)導(dǎo)入并插入vue-router插件;
(2)然后創(chuàng)建routers對(duì)象:在創(chuàng)建的 routers 對(duì)象中,傳入的 routes 中的每一項(xiàng)即為一條路由(route)配置, path 配置路由的路徑表示在匹配給定的地址,component 配置映射的組件用來(lái)渲染視圖;
(3)將 router 傳入 new Vue() 用于創(chuàng)建根組件,并在組件模板中使用 <router-view> 來(lái)定義區(qū)域,這樣根組件中對(duì)應(yīng)的視圖區(qū)域,可以基于 router 中的配置,根據(jù)頁(yè)面地址顯示不同的內(nèi)容;
(4)頁(yè)面地址變更后,<router-view> 對(duì)應(yīng)的區(qū)域會(huì)更新為地址匹配的組件。
原理:本質(zhì)上是從根組件中取出當(dāng)前的路由對(duì)象(parent.$route),然后取得該路由下對(duì)應(yīng)的組件,然后交由該組件進(jìn)行渲染。
vue-router 將自身作為一個(gè)插件安裝到了 Vue,通過(guò) Vue.mixin() 注冊(cè)了一個(gè) beforeCreate() 鉤子函數(shù),從而在之后所有的 Vue 組件創(chuàng)建時(shí)都會(huì)調(diào)用該鉤子函數(shù),從而檢查 router 參數(shù),進(jìn)行初始化。監(jiān)聽(tīng)到變化之后進(jìn)行地址匹配,得到一個(gè)對(duì)應(yīng)當(dāng)前地址的 route,然后將其設(shè)置到對(duì)應(yīng)的 vm._route 上。通過(guò)“數(shù)據(jù)劫持”,vm._route 的賦值會(huì)被 Vue 攔截到,并且觸發(fā) Vue 組件的更新渲染流程。當(dāng)視圖更新進(jìn)一步調(diào)用到 <router-view> 的 render() 時(shí),即進(jìn)入了 <router-view> 的處理。
4.原型鏈
所謂原型鏈,指的就是proto這一條指針鏈!
原型鏈的頂層就是Object.prototype,而這個(gè)對(duì)象的是沒(méi)有原型對(duì)象的。
只有函數(shù)才有prototype屬性,任何對(duì)象都有proto屬性。
proto可以理解為“構(gòu)造器的原型”。
當(dāng)js引擎查找對(duì)象屬性時(shí),先查找對(duì)象本身是否具有該屬性,沒(méi)有的話(huà)會(huì)在原型鏈上找。
只要是函數(shù)就有原型, 并且原型也是對(duì)象, 因此只要定義了一個(gè)函數(shù), 那么就可以找到他的原型, 如此反復(fù), 就可以構(gòu)成一個(gè)對(duì)象的序列, 這個(gè)結(jié)構(gòu)就被成為原型鏈。
構(gòu)造函數(shù)有prototype, 實(shí)例對(duì)象才有proto指向原型, 構(gòu)造函數(shù)的原型才有 constructor 指向構(gòu)造函數(shù)。
基礎(chǔ)面試3
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 引用:https://github.com/WangZhechao/expross 1.簡(jiǎn)介 這篇文章是分析exp...
- 1. 簡(jiǎn)介 這篇文章主要的目的是分析理解express的源碼,網(wǎng)絡(luò)上關(guān)于源碼的分析已經(jīng)數(shù)不勝數(shù),這篇文章準(zhǔn)備另辟蹊...
- 1.源碼目錄結(jié)構(gòu) Express4.x自己實(shí)現(xiàn)了一個(gè)router組件,實(shí)現(xiàn)http請(qǐng)求的順序流程處理,去除了很多綁...
- 每天的這個(gè)時(shí)間才是真正屬于我的時(shí)間,旁邊的大老公和小兒子此起彼伏的鼾聲總是會(huì)給我非常強(qiáng)烈的踏實(shí)感和滿(mǎn)足感。 更多的...
- 說(shuō)話(huà)要謹(jǐn)慎因?yàn)槟悴豢赡芡暾脑佻F(xiàn)當(dāng)時(shí)的場(chǎng)景和當(dāng)時(shí)說(shuō)話(huà)人的語(yǔ)氣神態(tài)所以,作為傳話(huà)者,你就要仔細(xì)揣摩這句話(huà)可能帶來(lái)的效...