1.get請求傳參長度的誤區
HTTP從未規定get或post長度限制的問題,get最大長度顯示主要來源于瀏覽器或web服務器的限制,不同的瀏覽器和web服務器,限制的最大成都不一樣,要支持IE最大長度為2083位元組,若支持谷歌,最大長度8182位元組
2.get和post請求在快取方面的區別
get請求類似于查找的程序,用戶獲取資料可以不用每次都與資料庫連接,所以可以使用快取,Post與get不同,post通常進行修改和洗掉的操作,需要與資料庫進行互動,所以不能使用快取,因此get請求適合于請求快取,
3.閉包
閉包就是能夠讀取其他函式內部變數的函式,或者子函式在外呼叫,子函式在所在的父函式作用域不會被釋放,
閉包的用途:讀取函式內部的變數;讓這些變數的值始終保存在記憶體中,不會再使得父函式掉用戶被自動清除;方便呼叫背景關系的區域變數,利于代碼的封裝,
4.類的創建和繼承
(1) 類的創建:新建一個function,在function的prototype中添加屬性和方法,
(2) 原型鏈的繼承:這里新建一個空物件,空物件指向Animal,并且Cat.prototype指向了這個空物件,(子類的原型prototype指向父類物件)這種就是基于原型鏈的繼承,基于原型鏈,既是父類實體也是子類實體,但無法hi先多繼承
(3) 構造繼承:使用父類的建構式來增強子類實體,等于是復制父類實體給子類(沒用到原型),這樣可以實作多繼承,但是只能繼承父類實體的屬性和方法,不能繼承原型上的屬性和方法,
(4) 實體繼承和拷貝繼承:實體繼承:為父類實體增加新特性,作為子類實體回傳,拷貝繼承:拷貝父類元素上的屬性和方法,實用性不強,
(5) 組合繼承:相當于構造繼承和原型鏈繼承的組合體,通過呼叫父類構造,繼承父類的屬性并保留傳參的特點,然后通過將父類實體作為子類原型,實作函式復用,可以繼承實體屬性和方法,也可以繼承原型屬性和方法,但呼叫了兩次父類建構式,生成了兩份實體
(6) 寄生組合繼承:通過寄生的方式砍掉父類的實體屬性,這樣在呼叫兩次父類構造的時候就不會初始化兩次實體方法和屬性
5.如何解決一部回呼地獄
Promise,Generator,async/await三種方法,
(1) Promise建構式包含有一個引數和一個帶有resolve和reject兩個引數的回呼,在回呼中執行一些操作(例如異步),如果一切正常可以呼叫resolve,否則可以呼叫reject把結果回傳給呼叫者,可以在new出來的Promise實體上呼叫.then()的方法,預先為這個Promise異步操作指定成功和失敗的回呼函式,
(2) Generator:generator函式不會像普通函式那樣立即執行,而是回傳一個指向內部狀態物件的指標,呼叫遍歷器物件Iterator的next方法,指標就會從函式頭部或者上一次停下來的地方開始執行,注意:next方法的引數表示上一個yield運算式的回傳值,而不是函式中引數的值,
(3) async/await:async函式會回傳一個promise物件,.then進行成功的回呼,.catch捕獲例外資訊,await只能在async內部使用當async內部的所有await執行完畢之后才會告訴promise成功或者失敗(如果await失敗后面的await都不再執行),才能進行后面的.then和.catch操作,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/2137.html
標籤:其他
