1、清除浮動的方法有哪些舞竿?
為什么要清除浮動京景,因為浮動的盒子脫離標準流,如果父盒子沒有設置高度的話骗奖,下面的盒子就會撐上 來确徙。
1.額外標簽法(在最后一個浮動標簽后醒串,新加一個標簽,給其設置 clear:both鄙皇;)(不推薦)
2.父級添加 overflow 屬性(父元素添加 overflow:hidden)(不推薦)
3.使用 after 偽元素清除浮動(推薦使用)
.clearfix:after{/*偽元素是行內(nèi)元素 正常瀏覽器清除浮動方法*/
? content: "";
? display: block;
? height: 0;
? clear:both;
? visibility: hidden;
}
.clearfix{
? *zoom: 1;/*ie6清除浮動的方式 *號只有IE6-IE7執(zhí)行芜赌,其他瀏覽器不執(zhí)行*/
}
4.使用 before 和 after 雙偽元素清除浮動
.clearfix:after,
.clearfix:before {
? content: '';
? display: table;
}
.clearfix:after {
? clear: both;
}
.clearfix {
? *zoom: 1;
}
2、this 的指向有哪些伴逸?
1较鼓、普通函數(shù)中的 this 指向 window
2、定時器中的 this 指向 window
3违柏、箭頭函數(shù)沒有 this,它的 this 指向取決于外部環(huán)境博烂、
4、事件中的 this 指向事件的調(diào)用者 黑馬程序員
5漱竖、 構(gòu)造函數(shù)中 this 和原型對象中的 this,都是指向構(gòu)造函數(shù) new 出來實例對象
6禽篱、類 class 中的 this 指向由 constructor 構(gòu)造器 new 出來的實例對象
7、自調(diào)用函數(shù)中的 this 指向 window
3馍惹、什么是遞歸躺率,遞歸有哪些優(yōu)點或缺點?
遞歸:如果一個函數(shù)在內(nèi)部可以調(diào)用其本身万矾,那么這個函數(shù)就是遞歸函數(shù)悼吱。簡單理解:函 數(shù)內(nèi)部自己調(diào)用自己, 這個函數(shù)就是遞歸函數(shù)
優(yōu)點:結(jié)構(gòu)清晰、可讀性強
缺點:效率低良狈、調(diào)用椇筇恚可能會溢出,其實每一次函數(shù)調(diào)用會在內(nèi)存棧中分配空間薪丁,而每個進程的棧的容 量是有限的遇西,當調(diào)用的層次太多時,就會超出棧的容量严嗜,從而導致棧溢出粱檀。->性能
4、什么是深拷貝漫玄、什么是淺拷貝茄蚯?
淺拷貝:創(chuàng)建一個新對象,這個對象有著原始對象屬性值的一份精確拷貝睦优。如果屬性是基本類型渗常,拷貝 的就是基本類型的值,如果屬性是引用類型刨秆,拷貝的就是內(nèi)存地址 凳谦,所以如果其中一個對象改變了這個 地址忆畅,就會影響到另一個對象衡未。(1.Object.assign()? ?2.concat()??3.擴展運算符? 4.slice()
深拷貝:會拷貝所有的屬性尸执,并拷貝屬性指向的動態(tài)分配的內(nèi)存。當對象和它所引用的對象一起拷貝時即 發(fā)生深拷貝缓醋。深拷貝相比于淺拷貝速度較慢并且花銷較大如失。拷貝前后兩個對象互不影響送粱。(1. 利用json數(shù)據(jù)和json字符串之間的轉(zhuǎn)換??2.$.extend()??3. 遞歸? 4.splice())
5褪贵、圖片懶加載是怎么實現(xiàn)的?
就是我們先設置圖片的 data-set 屬性(當然也可以是其他任意的抗俄,只要不會發(fā)送 http 請求就行了脆丁,作用 就是為了存取值)值為其圖片路徑,由于不是 src动雹,所以不會發(fā)送 http 請求槽卫。
然后我們計算出頁面 scrollTop 的高度和瀏覽器的高度之和, 如果圖片距離頁面頂端的坐標 Y(相對于整個頁面胰蝠,而不是瀏覽 器窗口)小于前兩者之和歼培,就說明圖片就要顯示出來了(合適的時機,當然也可以是其他情況)茸塞,
這時 候我們再將 data-set 屬性替換為 src 屬性即可躲庄。(懶加載是一種對網(wǎng)頁性能優(yōu)化的方式,比如當訪問一個頁面的時候钾虐,優(yōu)先顯示可視區(qū)域的圖片而不是一次性加載所有圖片噪窘,當需要顯示時,再發(fā)送圖片請求效扫,避免打開網(wǎng)頁時加載過多資源效览。
當一個網(wǎng)站的加載圖片過多時就需要懶加載的協(xié)助,頁面圖片多時荡短,在首次載入時一次性加載會耗費時間長丐枉,使用懶加載可以使頁面加載速度快、減輕服務器的壓力掘托、節(jié)省流量瘦锹。)
6、vue 中 computed 和 watch 的區(qū)別是什么闪盔?
computed計算屬性就是為了簡化 template 里面模版字符串的計算復雜度弯院、防止模版太過冗余。
它具有 緩存特性 computed 用來監(jiān)控自己定義的變量泪掀,該變量不在 data 里面聲明听绳,直接在 computed 里面定義,然后就 可以在頁面上進行雙向數(shù)據(jù)綁定展示出結(jié)果或者用作其他處理异赫;
watch主要用于監(jiān)控 vue 實例的變化椅挣,它監(jiān)控的變量當然必須在 data 里面聲明才可以头岔,它可以監(jiān)控一個 變量,也可以是一個對象鼠证,一般用于監(jiān)控路由峡竣、input 輸入框的值特殊處理等等,它比較適合的場景是 一個數(shù)據(jù)影響多個數(shù)據(jù)量九,它不具有緩存性
watch:監(jiān)測的是屬性值适掰, 只要屬性值發(fā)生變化,其都會觸發(fā)執(zhí)行回調(diào)函數(shù)來執(zhí)行一系列操作荠列。
computed:監(jiān)測的是依賴值类浪,依賴值不變的情況下其會直接讀取緩存進行復用,變化的情況下才 會重新計算肌似。
除此之外戚宦,有點很重要的區(qū)別是:計算屬性不能執(zhí)行異步任務,計算屬性必須同步執(zhí)行锈嫩。也就是說計算 屬性不能向服務器請求或者執(zhí)行異步任務受楼。如果遇到異步任務,就交給偵聽屬性呼寸。watch 也可以檢測 computed 屬性艳汽。
7、箭頭函數(shù)有哪些特征对雪,請簡單描述一下它河狐?
箭頭函數(shù)沒有自己的 this,this 指向定義箭頭函數(shù)時所處的外部執(zhí)行環(huán)境的 this
即使調(diào)用call/apply/bind也無法改變箭頭函數(shù)的 this 箭頭函數(shù)本身沒有名字箭頭函數(shù)不能 new瑟捣,會報錯
箭頭函數(shù)沒有 arguments馋艺,在箭頭函數(shù)內(nèi)訪問這個變量訪問的是外部執(zhí)行環(huán)境的 arguments箭頭函數(shù)沒有 prototype
8、post 和 get 請求有哪些區(qū)別迈套?
GET:一般用于信息獲取捐祠,使用 URL 傳遞參數(shù),對所發(fā)送信息的數(shù)量也有限制桑李,一般在 2000 個字符
POST:一般用于修改服務器上的資源踱蛀,對所發(fā)送的信息沒有限制。
GET 方式需要使用 Request.QueryString 來取得變量的值贵白,而 POST 方式通過 Request.Form 來獲取變量 的值率拒,也就是說 Get 是通過地址欄來傳值,而 Post 是通過提交表單來傳值禁荒。
然而猬膨,在以下情況中枝誊,請使用 POST 請求: 無法使用緩存文件(更新服務器上的文件或數(shù)據(jù)庫) 向服務器發(fā)送大量數(shù)據(jù)(POST 沒有數(shù)據(jù)量限制) 發(fā)送包含未知字符的用戶輸入時竭望,POST 比 GET 更穩(wěn)定也更可靠
9省撑、http 狀態(tài)碼分別代表什么意思乖阵?
1xx 表示 HTTP 請求已經(jīng)接受止剖,繼續(xù)處理請求
2xx 表示 HTTP 請求已經(jīng)處理完成(200)
3xx 表示把請求訪 問的 URL 重定向到其他目錄(304 資源沒有發(fā)生變化包雀,會重定向到本地資源)
4xx 表示客戶端出現(xiàn)錯誤 (403 禁止訪問般渡、404 資源不存在)
5xx 表示服務端出現(xiàn)錯誤
10蚕脏、BFC 是什么褐隆?
BFC(會計格式化上下文)污它,一個創(chuàng)建了新的 BFC 的盒子是獨立布局的,盒子內(nèi)元素的布局不會影響盒 子外面的元素庶弃。在同一個 BFC 中的兩個相鄰的盒子在垂直方向發(fā)生 margin 重疊的問題衫贬。
BFC 是值瀏覽器中創(chuàng)建了一個獨立的渲染區(qū)域,該區(qū)域內(nèi)所有元素的布局不會影響到區(qū)域外元素的布 局歇攻,這個渲染區(qū)域只對塊級元素起作用
11固惯、call、apply缴守、bind 三者的異同
共同點 : 都可以改變 this 指向;
不同點:call 和 apply會調(diào)用函數(shù), 并且改變函數(shù)內(nèi)部 this 指向.call 和 apply傳遞的參數(shù)不一樣,call 傳遞參數(shù)使用逗號隔開,apply 使用數(shù)組傳遞 bind 不會調(diào)用函數(shù), 可以改變函 數(shù)內(nèi)部 this 指向. 應用場景并不會立即執(zhí)行葬毫。(bind 是返回對應函數(shù),便于稍后調(diào)用屡穗;apply 贴捡、call 則是立即調(diào)用 。)
call 經(jīng)常做繼承.
apply 經(jīng)常跟數(shù)組有關系. 比如借助于數(shù)學對象實現(xiàn)數(shù)組最大值最小值
bind 不調(diào)用函數(shù),但是改變 this 指向. 比如改變定時器內(nèi)部的 this 指向