1匀谣、用promise獲取新聞練習:
//定義獲取新聞的功能函數
? function getNews(url){
? ? let promise = new Promise((resolve,reject) => {
? ? ? // 狀態(tài):初始化
? ? ? // 執(zhí)行異步任務
? ? ? // 創(chuàng)建xmlHttp實例對象
? ? ? let xmlHttp = new XMLHttpRequest();
? ? ? console.log(xmlHttp.readyState);
? ? ? //綁定redayState監(jiān)聽
? ? ? xmlHttp.onreadystatechange = function(){
? ? ? ? if(xmlHttp.readyState === 4){ //全等于4,請求已完成
? ? ? ? ? if(xmlHttp.status == 200){//請求成功
? ? ? ? ? ? // console.log(xmlHttp.responseText);
? ? ? ? ? ? //修改狀態(tài)
? ? ? ? ? ? resolve(xmlHttp.responseText);//修改promise的狀態(tài)為成功的狀態(tài)
? ? ? ? ? }else{//請求失敗
? ? ? ? ? ? reject('暫時沒有新聞內容');
? ? ? ? ? }
? ? ? ? }
? ? ? };
? ? ? // open設置請求的方式以及url
? ? ? xmlHttp.open('GET',url);
? ? ? // 發(fā)送
? ? ? xmlHttp.send();? //ajax請求發(fā)送
? ? })
? ? return promise;
? }
? getNews('http://localhost:3000/news?id=2')
? ? .then((data) => {
? ? ? console.log(data);
? ? ? // console.log(typeof data);
? ? ? // 準備獲取評論內容的url
? ? ? let commentsUrl = JSON.parse(data).commentsUrl;
? ? ? let url = 'http://localhost:3000' + commentsUrl;
? ? ? // 發(fā)送請求獲取評論內容
? ? ? return getNews(url);
? ? },(error) => {
? ? ? console.log(error);
? ? })
? ? .then((data) => {
? ? ? console.log(data);
? ? },() => {
? ? });
2、class:類
*通過class定義類/實現類的繼承
* 在類中通過constructor定義構造方法
* 通過new來創(chuàng)建類的實例
* 通過extends來實現類的繼承
* 通過super調用父類的構造方法
* 重寫從父類中繼承的一般方法
3能岩、指數運算符(冪): **浪感。console.log(2 ** 3);//8
4、Array.prototype.includes(value) : 判斷數組中是否包含指定value
eg:console.log(arr.includes('a'));
5少梁、字符串擴展:
includes(str) : 判斷是否包含指定的字符串
startsWith(str) : 判斷是否以指定字符串開頭
endsWith(str) : 判斷是否以指定字符串結尾
repeat(count) : 重復指定次數? eg:console.log(str.repeat(5));
6、數值擴展:
*二進制與八進制數值表示法: 二進制用0b, 八進制用0o
*Number.isFinite(i) : 判斷是否是有限大的數
*Number.isNaN(i) : 判斷是否是NaN
*Number.isInteger(i) : 判斷是否是整數
*Number.parseInt(str) : 將字符串轉換為對應的數值
*Math.trunc(i) : 直接去除小數部分
7矫付、數組擴展:
*Array.from(v) : 將偽數組對象或可遍歷對象轉換為真數組
*Array.of(v1, v2, v3) : 將一系列值轉換成數組
*find(function(value, index, arr){return true}) : 找出第一個滿足條件返回true的元素
*findIndex(function(value, index, arr){return true}) : 找出第一個滿足條件返回true的元素下標
8凯沪、對象擴展:
*Object.is(v1, v2):判斷2個數據是否完全相等
*Object.assign(target, source1, source2..):將源對象的屬性復制到目標對象上
*直接操作 __proto__ 屬性
? let obj2 = {};
obj2.__proto__ = obj1;
9、vue:
引入Vue.js
創(chuàng)建Vue對象
el : 指定根element(選擇器)
data : 初始化數據(頁面可以訪問)
雙向數據綁定 : v-model
顯示數據 : {{xxx}}
理解vue的mvvm實現