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