Promise對象
1. 理解:
* Promise對象: 代表了未來某個將要發生的事件(通常是一個異步操作)
* 有了promise對象, 可以將異步操作以同步的流程表達出來, 避免了層層嵌套的回調函數(俗稱'回調地獄')
* ES6的Promise是一個構造函數, 用來生成promise實例
2. 使用promise基本步驟(2步):
* 創建promise對象
let promise = new Promise((resolve, reject) => {
//初始化promise狀態為 pending
//執行異步操作
if(異步操作成功) {
resolve(value);//修改promise的狀態為fullfilled
} else {
reject(errMsg);//修改promise的狀態為rejected
}
})
* 調用promise的then()
promise.then(function(
result => console.log(result),
errorMsg => alert(errorMsg)
))
3. promise對象的3個狀態
* pending: 初始化狀態
* fullfilled: 成功狀態
* rejected: 失敗狀態
4. 應用:
* 使用promise實現超時處理
* 使用promise封裝處理ajax請求
let request = new XMLHttpRequest();
request.onreadystatechange = function () {
}
request.responseType = 'json';
request.open("GET", url);
request.send();
class
1. 通過class定義類/實現類的繼承
2. 在類中通過constructor定義構造方法
3. 通過new來創建類的實例
4. 通過extends來實現類的繼承
5. 通過super調用父類的構造方法
6. 重寫從父類中繼承的一般方法
字符串擴展
1. includes(str) : 判斷是否包含指定的字符串
2. startsWith(str) : 判斷是否以指定字符串開頭
3. endsWith(str) : 判斷是否以指定字符串結尾
4. repeat(count) : 重復指定次數
數值擴展
1. 二進制與八進制數值表示法: 二進制用0b, 八進制用0o
2. Number.isFinite(i) : 判斷是否是有限大的數
3. Number.isNaN(i) : 判斷是否是NaN
4. Number.isInteger(i) : 判斷是否是整數
5. Number.parseInt(str) : 將字符串轉換為對應的數值
6. Math.trunc(i) : 直接去除小數部分
數組擴展
1. Array.from(v) : 將偽數組對象或可遍歷對象轉換為真數組
2. Array.of(v1, v2, v3) : 將一系列值轉換成數組
3. find(function(value, index, arr){return true}) : 找出第一個滿足條件返回true的元素
4. findIndex(function(value, index, arr){return true}) : 找出第一個滿足條件返回true的元素下標
對象擴展
1. Object.is(v1, v2)
* 判斷2個數據是否完全相等
2. Object.assign(target, source1, source2..)
* 將源對象的屬性復制到目標對象上
3. 直接操作 __proto__ 屬性
let obj2 = {};
? obj2.__proto__ = obj1;
ES7
1. 指數運算符(冪): **
2. Array.prototype.includes(value) : 判斷數組中是否包含指定value
<script type="text/javascript">
? console.log(2 ** 3);//8
? let arr = [1,4,5,6,'abc'];
? console.log(arr.includes('a'));//false
? console.log(arr.includes('abc'));//true
? console.log(arr.includes(4));//true
</script>