形參默認值
當不傳入?yún)?shù)的時候默認使用形參里的默認值。 缺省參數(shù)
promise對象
代表了未來某個將要? 發(fā)生的事件(通常是一個異步操作)夯秃,有了promise對象座咆,可以將異步操作以同步的流程表達出來,避免了層層嵌套的回調(diào)函數(shù)(俗稱‘回調(diào)地獄’ 仓洼,函數(shù)本身層層嵌套介陶,又可以互相調(diào)用,函數(shù)之間高度耦合色建,可能會造成無法預期的錯誤)
#ES6 的promise是一個構(gòu)造函數(shù)哺呜,用來生成promise實例
#promise對象的3個狀態(tài)?
pending:初始化狀態(tài)
fullfilled:成功狀態(tài)
rejected:失敗狀態(tài)?
應用
使用promise實現(xiàn)超時處理
使用promise封裝處理ajax請求?
#創(chuàng)建promise對象
let promise ? = new promise ((resolve,reject) =>{ # 這兩個參數(shù)其實是兩個函數(shù)
? ? //初始化promise狀態(tài):pending
? ? console.log('111');
? ? //執(zhí)行異步操作,通常發(fā)送ajax請求镀岛、開啟定時器
? ? setTimeout(( ) =>{
? ? ? ? console.log('333');
? ? ? ? //很具異步任務的返回結(jié)果弦牡,取修改promise的狀態(tài)
? ? ? ? //異步任務執(zhí)行成功
? ? ? ? resolve();//修改promise狀態(tài)為fullfilled(成功狀態(tài) )
? ? ? ? //異步任務執(zhí)行失敗
? ? ? ? reject();//修改promise狀態(tài)為rejected(失敗狀態(tài))
? ? }友驮,2000);
})
console.log('222');
promise
? ? .then(() => {//成功的回調(diào)
? ? ? ? console.log('成功了~~')
? ? }驾锰,() => {//失敗的回調(diào)
? ? ? ? console.log('失敗了~~')卸留;
? ? });?
class
# 1.通過class定義類/實現(xiàn)類的繼承
# 2.在類中通過constructor 定義構(gòu)造方法 專門用來生成實例對象
# 3.通過new來創(chuàng)建類的實例
# 4. 通過extends來實現(xiàn)類的繼承 如 class SrarPerson extends Person{
super()#發(fā)生了繼承椭豫,函數(shù)中第一句必須是super()
}
# 5. 通過suoer調(diào)用父類的構(gòu)造方法
# 6. 重寫從父類中繼承的一般方法
字符串擴展
1. includes(str) :判斷是否包含指定的字符串
2.startWith(str) :? 判斷是否以指定字符串開頭
3.endWith(str) : 判斷是否以指定字符產(chǎn)結(jié)尾
4.repeat(count) : 重復指定次數(shù) ? ('dsad' * x)‘
數(shù)值擴展
1.二進制與八進制數(shù)值的表示法:二進制用0b ,八進制用0o,
console.log(0b1010);//10 ? #快速把二進制轉(zhuǎn)成10進制101000
8 4 2 1 二進制快速計算10進制耻瑟,把要求的二進制數(shù)寫好,然后把1赏酥、2喳整、4、8裸扶、16....等
1 0 1 0 數(shù)從右往左一次對齊二進制數(shù)框都,然后用二進制數(shù)上有1位置對應的數(shù)列上的數(shù)相加,得到的結(jié)果就是二進制數(shù)對應的10進制數(shù)
console.log(0o56);//46 #快速把八進制轉(zhuǎn)成10進制
2.Number.isFinite(i):判斷是否是有限大的數(shù) 如:console.log(Number.ifFinite(3);//true
Infinity無限大
3.Number.isNan(i): 判斷是否是NaN
4.Number.isInteger(i):判斷是否是整數(shù)
5.Number.parseInt(str):將字符串轉(zhuǎn)換為對應的數(shù)值
6.Math.trunc(i) : 直接去除小數(shù)部分
數(shù)組擴展
1.Array.from():將偽數(shù)組(沒有數(shù)組的一般方法)對象或可遍歷對象轉(zhuǎn)化為真數(shù)組
let btns = document.getElementsByTagName() #根據(jù)標簽名稱來獲取對象
2.Array of (a , b , c): 將一系列值轉(zhuǎn)換為數(shù)組?
3.find(function(value,index,arr) { return true}); #找出第一個滿足條件返回true的元素下標
對象擴展
1. Object.is(a ,b) #判斷2個數(shù)據(jù)是否完全相等
console.log(0 == -0);//true ??console.log(NaN == NaN)://false# NaN和任何數(shù)包括自己比較都不相等
2. Object.assign(target,source1,source2....) #將源(sourcex...)對象的屬性復制到目標(target)對象上
3.直接操作__proto__(隱式原型)屬性
? ? Let obj2? = {};
? ? obj2.__proto__ = obj1; #讓obj2 擁有obj1的屬性
ES7
指數(shù)運算符 ** #2**3 = 8
Array.prototype.includes(value):判斷數(shù)組中是否包含指定value
let arr= [1,4,5,6];
console.log(arr.includes('a'));//false
console.log(arr.includes(4));//true