Javascript基礎(二)
阿新 • • 發佈:2018-12-09
三. JavaScript的資料型別
基本資料型別
- number
- string
- Boolean
- undefined
- null
引用資料型別
四. JavaScript陣列方法,JavaScript字串方法 陣列方法
- arr.push(),向後新增,並返回修改後陣列的長度
- arr.unshift(),向後刪除,並返回修改後陣列的長度
- arr.pop(),向前新增,,然後返回移除的項
- arr.shift(),向前刪除,,然後返回移除的項
- arr.splice(a,b,c),刪替插
- 刪除:a,刪除第一項序號,b,刪除數量
- 替換:a,替換起點項,b,數量,c,替換資料
- 插入:a,起點項,b,0,表示不刪除,c,新增的資料
arr.sort(),排序,按unicode編碼排序
arr.sort(function(a,b){ return a-b(b-a);//正序(倒序) }
- arr.join(),連線字串為陣列
- arr.concat(),將引數新增進陣列中
- arr.reverse(),將陣列反序
- forEach():對陣列進行遍歷迴圈,沒有返回值
字串方法
- str.length,輸出字串長度
- str.indexOf(searchstring,startIndex),從startIndexz位置開始找searchstring第一次出現的位置,若未找到,返回-1
- str.lastIndexOf(searchstring,startIndex),從後向前找,返回字元第一次出現的位置下標,未找到,返回-1
- str.charAt(index),返回子字串,index為陣列下標,範圍(0,str.length-1)
- str.charCodeAt(),返回字串的unicode編碼
- string.fromCharCode(num,num1),根據編碼返回字串
- str.substring(start,end),兩個引數,擷取字串,傳入負值會從0開始
- str.slice(),一個引數時,不會自動檢測,負數時自動從後向前找
- str.split(“.”),以.分割字串輸出陣列,不傳參也會分割
- str.toUppCase(),將字串轉化為大寫
- str.toLowerCase(),將字串轉化為小寫
- str.replace(regexp|substr, newSubStr|function),搜素與子字串相匹配內容,並用新字串替換
- str.search(regexp),找 str 與一個正則表示式是否匹配。如果匹配成功,則返回正則表示式在字串中首次匹配項的索引;否則,返回 -1。
五. ajax的四個過程,要手撕程式碼
HTTP請求方法
- GET在url裡傳送,安全性低,有快取,會被保留在歷史記錄中便於分享,在報文主體沒有任何意義,在瀏覽器回退時是無害的,只可以進行url編碼,對傳遞的引數有長度限制,只接受ASCII字元
- POST在request body裡傳送,安全性一般,更適合於上傳,根據報文(指的是一串資料)主體對指定資源做出處理,在瀏覽器回退時會再次請求,可以支援多種方式,對引數沒有限制
AJAX過程
能夠區域性重新整理網頁資料而不重新載入
建立ajax物件(用來和伺服器交換物件)
var xhr = new XHTMLHttpRequest(); //IE7以後版本
連線伺服器
open(方法,檔名,非同步傳輸)
- 方法:get/post
- 檔名:自定義的檔名
- 同步(事件一件一件進行)/非同步(多種事件一起進行):false/true
傳送請求
send()
,引數為作為請求主體傳送的資料,不需傳送時,必須傳入null,null對有些瀏覽器來說是必須的
接受返回值
onreadystatechange; 當伺服器發生資料傳輸時的請求狀態
- 屬性:readState
- 0 (未初始化) 還未呼叫open方法
- 1 (載入) 已呼叫open方法,正在傳送請求
- 2 (載入完成) send()方法以完成,已收到全部內容
- 3 (解析) 正在解析相應內容
- 4 (完成) 可在客戶端呼叫
- 響應自動填充xhr物件:
- responseText屬性:作為響應主體被返回的文字
- responseXML屬性:若響應內容型別是
text/xml
或application/xml
,包含響應資料的XML DOM 文件,不是時為儲存為null - status屬性:響應的HTTP狀態,判斷請求是否成功,200成功,常見404失敗
- statusText:HTTP狀態說明
- 收到響應前可使用
abort()
方法來取消非同步請求,xhr物件會停止觸發事件,並不在允許訪問任何響應屬性值,在終止請求後,會對物件進行解引用,由於記憶體原因,不建議重用xhr物件
HTTP狀態碼
1xx(臨時響應):表示臨時響應,並需要請求者繼續執行操作
- 100(繼續):請求者應當繼續提出請求。伺服器表示已收到請求的第一部分,正在等待其餘部分
- 101(切換協議):請求者要求伺服器切換協議,伺服器已確認並準備更換
2xx(成功):表示成功處理了請求
- 200(成功):伺服器已成功處理了請求,提供了請求的網頁
- 201(已建立):請求成功並且伺服器建立了新的資源
- 202(已接受):伺服器已接受請求,但未處理
- 203(非授權資訊):已成功處理請求,但返回的資訊可能來自另一來源
- 204(無內容):成功處理了請求,但沒有返回任何內容
- 205(重置內容):成功處理了請求,並重置內容
- 206(部分內容):成功處理了部分請求
3xx(重定向):表示完成請求,需要進一步操作
- 300(多種選擇):伺服器針對請求,可執行多種操作
- 301(永久移動):請求的網路已永久移動到新位置返回響應時,會自動將轉到新位置
- 302(臨時移動):伺服器從不同的位置進行網頁請求,但請求者會使用原有位置來進行以後的請求
- 303(檢視其他位置):請求者應對不同的位置,使用單獨的GET請求檢索響應時,伺服器返回此地程式碼
- 304(未修改):自從上次請求後,請求的網頁未修改過
- 305(使用代理):請求者只能使用代理訪問請求的網頁
- 307(臨時重定向):伺服器目前從不同位置的網頁響應請求,但請求者會繼續使用原有位置來進行以後請求
4xx(請求錯誤):表示請求錯誤,妨礙了伺服器的處理
- 400(錯誤請求):伺服器不理解請求的語法
- 401(未授權):請求要求身份驗證
- 403(禁止):伺服器拒絕請求
- 404(未找到):找不到請求網頁
- 405(方法禁用):禁止請求中指定的方法
- 406(不接受):無法使用請求的內容特性響應請求的網頁
- 407(需要代理授權):指定請求者應當授權使用代理
- 408(請求超時):等候請求時發生超時
- 409(衝突):在完成請求時發生衝突,伺服器必須在響應中包含有關衝突資訊
- 410(已刪除):請求的資源已永久刪除
- 411(需要有效長度):伺服器不接受不含有效內容長度標頭欄位的請求
- 412(未滿足前提條件):未滿足請求者在請求中設定的其中一個前提條件
- 413(請求實體過大):伺服器無法處理請求,超出了處理範圍
- 414(請求的URL過長):網址過長
- 415(不支援的媒體型別)請求的格式不受請求頁面支援:
- 416(請求範圍不符合要求):頁面無法提供請求的範圍
- 417(未滿足期望值):未滿足“期望”請求標字頭段的要求
5xx(伺服器錯誤)
- 500(伺服器內部錯誤):伺服器遇到錯誤,無法完成請求
- 501(尚未實施):不具備完成請求的功能
- 502(錯誤閘道器):伺服器作為閘道器或代理,從上游伺服器收到無效請求
- 503(伺服器不可用):目前無法使用(維修或故障),只是暫時的
- 504(閘道器超時):伺服器作為閘道器或代理,但沒有及時從上游伺服器收到請求
- 505(HTTP版本不受支援):不支援HTTP協議版本
六. JSON是什麼,JSON物件和JSON字串如何轉換
JSON是Javascript一個嚴格的子集,是一種輕量級的資料格式,可以簡化複雜資料結構,利用了javascript的一些模式來表示資料化結構,不支援變數、函式、物件例項,有三種類型的值:
簡單值
與JS相同,不過字串必須使用雙引號,且不支援undefined
物件: JSON物件字面量,與JS表示不同,沒有變數,屬性名必須加雙引號
{
"name": "chenlinong",
"age":29,
"school":{
"name": "xxx",
"location": "xxx"
}
};
陣列: JSON陣列,與JS表示不同,沒有變數和分號
[
{
name": "chenlinong",
"age":29,
"school":[
"xxx"
]
},
{
name": "chenlinong",
"age":29,
"school":[
"xxx"
]
}
]
早期JSON解析器用JS的eval()
函式,可以解析、解釋並返回JS物件和陣列,ES5對JSON規範,並定義了全域性物件,eval()
對JSON資料結構求值存在風險
JSON物件有兩個方法:
stringify(變數名,過濾器,選項)
,把JS物件序列化為JSON字串,不包含空格字元和縮排- 過濾器:可以是陣列,也可以是引數。
- 字串縮排,若是數值,代表每個級別縮排的空格數,第二個引數可設為null,最大縮排空格數為10;也可使用字串,可設定為製表符
toJSON()方法
,解決JSON.stringify()
不能滿足有些JS物件自定義序列化需求時,給JS物件新增方法,返回自身JSON資料格式
parse(變數名,還原函式)
,把JSON字串解析為JS值,還原函式在每個鍵值對上呼叫