摘要:而第一種方法只能判斷引用類型,不能判斷值類型,因為值類型沒有對應(yīng)的構(gòu)造函數(shù)描述一個對象的過程生成一個新的空對象指向這個新對象執(zhí)行構(gòu)造函數(shù)中的代碼,即對賦值將新對象的屬性指向構(gòu)造函數(shù)的屬性返回,即得到新對象。
最近在在看前端面試教程,這篇文章里大部分是看視頻的過程中自己遇到的不清楚的知識點,內(nèi)容很簡單,只是起到一個梳理作用。有些地方也根據(jù)自己的理解在作者的基礎(chǔ)上加了點東西,如有錯誤,歡迎交流。 1、typeof有幾種結(jié)果
undefined、、boolean、object、string、number、function、symbol(ES6新增)2、何時使用 ===,何時使用 ==
if(obj.a == null) { //相當(dāng)于obj.a === null || obj.a === undefined //除了這種情況用 == 之外,全部用 === //這是jquery的推薦寫法 }3、js中的內(nèi)置函數(shù)有哪些?
Object()、Array()、Boolean()、Number()、String()、Function()、Date()、RegExp()、Error() //注意:構(gòu)造函數(shù)的函數(shù)名一般都以大寫字母開頭,自己定義的構(gòu)造函數(shù)也盡量這樣寫4、window.onload和DOMContentLoaded的區(qū)別
當(dāng)onload事件觸發(fā)時,頁面上所有的DOM,樣式表,腳本,圖片,flash都已經(jīng)加載完成了。 當(dāng)DOMContentLoaded事件觸發(fā)時,僅當(dāng)DOM加載完成,不包括樣式表,圖片,flash。5、如何理解JSON
JSON首先是一種數(shù)據(jù)格式,也是js的一種內(nèi)置對象,它有兩個方法:stringify()(序列化)、parse()(反序列化)5、變量類型和引用類型的區(qū)別
js中變量分為兩種類型,值類型:boolean、undefined、number、string和引用類型(object)。值類型的變量定義體和具體的值都存在棧內(nèi)存中,所以var a = 123; var b = a; b = 456; 以后b等于456,a還是等于123; 而引用類型的變量定義體存在棧內(nèi)存中,而具體的值存在堆內(nèi)存中,每次復(fù)制一個引用類型,相當(dāng)于只是復(fù)制了一份引用。所以復(fù)制體改變,被復(fù)制體也會跟著同時改變。6、如何準確判斷一個變量是數(shù)組類型
兩種辦法: 1、 a instanceof Array; 2、 Object.prototype.toString.call(a) //a為要檢測的變量,實際上第二種方法可以準確判斷js中幾乎所有的類型。 //而第一種方法只能判斷引用類型,不能判斷值類型,因為值類型沒有對應(yīng)的構(gòu)造函數(shù)7、描述new一個對象的過程
1、生成一個新的空對象; 2、this指向這個新對象; 3、執(zhí)行構(gòu)造函數(shù)中的代碼,即對this賦值; 4、將新對象的__prototype__屬性指向構(gòu)造函數(shù)的prototype屬性; 5、返回this,即得到新對象。8、說明this的幾種不同的使用場景
1、作為構(gòu)造函數(shù)執(zhí)行 2、作為對象屬性執(zhí)行 3、作為普通函數(shù)執(zhí)行 4、call bind apply 5、DOM事件中使用 6、js非strict模式下,this默認指向window對象9、創(chuàng)建10個a標簽,點擊的時候彈出對應(yīng)的序號(0-9)
//考察js作用域和閉包的運用10、如何理解作用域
1、自由變量 2、作用域鏈、即自由變量的查找 3、閉包的兩個場景11、開發(fā)實際過程中閉包的應(yīng)用
封裝變量,收斂權(quán)限12、如何理解常說的JS
常說的JS一般來說包含兩部分:
1、JS基礎(chǔ)知識(ECMA262標準),也就是語法標準,讓js擁有基礎(chǔ)編程語言的能力。 2、JS-Web-API(W3C標準),讓js擁有操作dom和bom的能力。13、querySelectorAll 方法相比 getElementsBy 系列方法有什么區(qū)別
1、querySelectorAll屬于W3C的Selector API規(guī)范,而getElementsBy屬于W3C的DOM規(guī)范。
2、方法接受的參數(shù)不一樣,前者接受的是css選擇符,而后者只能是單一的ClassName、Id、或者TagName.
3、querySelectorAll返回的是static node List,而getElementsBy返回的是live node List,獲取以后在添加元素,前者數(shù)量不變,后者數(shù)量會跟著增加。會導(dǎo)致一些死循環(huán),參考:https://www.bbsmax.com/A/GBJr...
http://www.imooc.com/article/...
document.getElementsBy系列、docuemnt.querySelectorAll、document.querySelector、 getAttribute(attrName)、setAttribute(attrName,val)、 appendChild(node) - 在最后插入新的子節(jié)點(元素)、 insertBefore(node) - 在前面插入新的子結(jié)點 removeChild(node) - 刪除子節(jié)點(元素)、15、Dom節(jié)點的Attribute和property有什么區(qū)別
Attribute是HTML標簽的屬性,property是JS對象的屬性
16、常見的BOM操作API檢測客戶端
navigator.userAgent
檢測屏幕
screen.width、screen.height
url操作
location.href .protocol .pathname .search .hash17、常見瀏覽器的內(nèi)核
Trident內(nèi)核:主要代表為IE瀏覽器 // -ms- Gecko內(nèi)核:主要代表為Firefox //-moz- Presto內(nèi)核:主要代表為Opera //-o- Webkit內(nèi)核:產(chǎn)要代表為Chrome和Safari //-webkit-18、描述瀏覽器訪問一個網(wǎng)站的過程
一、域名到ip地址解析過程
1、查找瀏覽器緩存
2、查找系統(tǒng)緩存(一般是hosts文件)
3、查找路由器緩存
4、查找ISP DNS 緩存
5、ISP發(fā)起一個迭代的DNS請求
(1)本地 DNS服務(wù)器即將該請求轉(zhuǎn)發(fā)到互聯(lián)網(wǎng)上的根域(即一個完整域名最后面的那個點,通常省略不寫)
(2)根域?qū)⑺樵冇蛎械捻敿売颍僭O(shè)要查詢ke.qq.com,頂級域就是com)的服務(wù)器IP地址返回到本地DNS
(3) 本地DNS根據(jù)返回的IP地址,再向頂級域(就是com域)發(fā)送請求。
(4) com域服務(wù)器再將域名中的二級域(即ke.qq.com中的qq)的IP地址返回給本地DNS
(5) 本地DNS再向二級域發(fā)送請求進行查詢
(6) 之后不斷重復(fù)這樣的過程,直到本地DNS服務(wù)器得到最終的查詢結(jié)果,并返回到主機。這時候主機才能通過域名訪問該網(wǎng)站。
域名解析的過程到此完成,至此瀏覽器拿到了域名對應(yīng)的IP地址
二、建立TCP/IP連接,通過TCP協(xié)議的三次握手,連接建立以后,瀏覽器就向服務(wù)器發(fā)起http請求,一般通過get或者post方法。
三、服務(wù)器端接受到這個請求,根據(jù)請求參數(shù),通過相關(guān)的處理把結(jié)果,一個html代碼,返回給服務(wù)器
四、瀏覽器拿到html代碼,開始解析頁面,里面的css、js、圖片等靜態(tài)資源,同樣要經(jīng)過上述步驟才能到達瀏覽器。
五、瀏覽器根據(jù)拿到的資源對頁面進行渲染,最后將渲染完成的頁面呈現(xiàn)給用戶。
200 //請求完成,成功返回數(shù)據(jù) 301 //所請求的頁面已經(jīng)轉(zhuǎn)移至新的url 400 //客戶端請求的語法錯誤,服務(wù)器無法解析 401 //請求要求用戶的身份認證 403 //服務(wù)器理解請求客戶端的請求,但是拒絕執(zhí)行此請求,可能還是沒有權(quán)限 404 //客戶端請求的資源不存在,最常見的一種狀態(tài)碼 500 //服務(wù)器錯誤 503 //由于超載或系統(tǒng)維護,服務(wù)器暫時的無法處理客戶端的請求20、簡述cookies、 sessionStorage、localStorage的區(qū)別
cookies容量大約只有4KB、所有的http請求都帶著它,會影響獲取資源的效率,API太簡單只有documet.cookies,使用的時候一般要通過字符串處理函數(shù)經(jīng)過封裝。
sessionStorage和localStorage容量有5M,API簡單易用,它們兩個唯一區(qū)別就是sessionStorage關(guān)閉瀏覽器會自動清除
一、加載資源優(yōu)化:
1、靜態(tài)資源的合并壓縮(利用webpack、gulp等,壓縮合并js、css文件) 2、靜態(tài)資源緩存(同一網(wǎng)站下靜態(tài)資源的名字不變,瀏覽器不會重新請求) 3、使用CDN讓資源加載更快(大公司都有自己的CDN) 4、使用SSR(server side render)后端渲染,數(shù)據(jù)直接輸出到HTML中,是vue、react中提出的概念,但是其實在早期的php、asp、jsp中都是這種渲染形式。
二、渲染優(yōu)化
1、CSS放前面,JS放后面 2、懶加載(圖片懶加載,下拉加載更多,而不是一次性全部加載) 3、減少DOM查詢,對DOM查詢做緩存 4、減少DOM操作,多個操作盡量合并在一起執(zhí)行(利用createDocumentFragment,先將要插入的dom元素按次序放在Fragment中,再一次性將Fragment插入到已有的dom中) 5、事件節(jié)流 6、盡早操作,在DOMContentLoaded的時候就進行操作,而不是window.onload以后再進行,zepto和jquery都是用前者22、常見的web攻擊類型
1、XSS(Cross-site Scripting)跨站請求攻擊
例如:攻擊者在文章里面寫入一段,別人點開文章,就相當(dāng)于執(zhí)行了這個腳本,攻擊者就可以獲得別人的隱私信息
解決方法:前端替換關(guān)鍵字,例如替換 < 為<, > 為> 。 由于前端性能有限,一般這些工作交給后端處理
2、XSRF(Cross-site request forgery)跨站請求偽造
攻擊者偽造成被攻擊者向服務(wù)器發(fā)送請求,造成財產(chǎn)損失
解決方法:增加驗證流程,密碼,短信驗證碼。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/84148.html
摘要:特意對前端學(xué)習(xí)資源做一個匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進步。 特意對前端學(xué)習(xí)資源做一個匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會及時更新,平時業(yè)務(wù)工作時也會不定期更...
摘要:前端工程師學(xué)習(xí)資料,快速查找面試題,經(jīng)典技術(shù)文章的總結(jié),編程技巧,幫助學(xué)習(xí)者快速定位問題花點時間整理出一下前端工程師日常工作所需要的學(xué)習(xí)資料查找,幫助學(xué)習(xí)者快速掌握前端工程師開發(fā)的基本知識編程始于足下記住再牛逼的夢想也抵不住傻逼似的堅持蝴蝶 前端工程師學(xué)習(xí)資料,快速查找面試題,經(jīng)典技術(shù)文章的總結(jié),編程技巧,幫助學(xué)習(xí)者快速定位問題花點時間整理出一下web前端工程師日常工作所需要的學(xué)習(xí)資料...
摘要:編程思想第版這本書要常讀,初學(xué)者可以快速概覽,中等程序員可以深入看看,老鳥還可以用之回顧的體系。以下視頻整理自慕課網(wǎng)工程師路徑相關(guān)免費課程。 我自己總結(jié)的Java學(xué)習(xí)的系統(tǒng)知識點以及面試問題,目前已經(jīng)開源,會一直完善下去,歡迎建議和指導(dǎo)歡迎Star: https://github.com/Snailclimb/Java-Guide 筆者建議初學(xué)者學(xué)習(xí)Java的方式:看書+視頻+實踐(初...
閱讀 1819·2023-04-25 14:33
閱讀 3411·2021-11-22 15:22
閱讀 2211·2021-09-30 09:48
閱讀 2742·2021-09-14 18:01
閱讀 1770·2019-08-30 15:55
閱讀 3034·2019-08-30 15:53
閱讀 2176·2019-08-30 15:44
閱讀 677·2019-08-30 10:58