變量/常量聲明
變量let不存在變量提升涮瞻,不影響作用域)
常量const不可以修改,數(shù)組與對象可以(常量指向的是對象指針)
變量解構(gòu)賦值
// 數(shù)組
let [a,b,c] = arr;
// 對象
let {a = 0, b = 0} = obj;
// 已聲明變量
({x} = obj)
// 字符串
const [ a, b ] = 'xzp';
let { length:len } = 'xzp';
// 函數(shù)參數(shù)解構(gòu)賦值
function add([x,y]){ return x + y }// 傳入數(shù)組
function move({x=0,y=0} = {}){ return [x,y]}// 傳入對象
字符串擴展
1.字符串的遍歷器接口 for of
2.模板字符串 let str = `xzp${}`;
3.新增方法:includes->查找字符串,布爾值
startsWith/endsWith->以韩玩。開頭/結(jié)尾召衔,布爾值
repeat(number)->字符串重復(fù)教馆,正整數(shù)
padStart/padEnd(number,str)->頭部/尾部填充str遵蚜,直到length=number
trimStart()和trimEnd()->去掉頭部/尾部空格
replaceAll()->替換全部
Number擴展
Number.isNaN()坎匿,Number.parseInt(),Number.parseFloat()
Number.isFinite()是否有限蚁廓,Number.isInteger()是否為整數(shù)
Number.isSafeInteger是否為可準確表示的整數(shù)-2^25到2^25之間
函數(shù)擴展
1.箭頭函數(shù)
this指針是靜態(tài)的访圃,且無法修改,指向外層第一個函數(shù)的this
不能作為構(gòu)造函數(shù)
不能使用arguments變量
2.函數(shù)形參可以賦默認值
3.rest參數(shù)相嵌,獲取函數(shù)剩余的參數(shù)
數(shù)組擴展
新增find腿时、findIndex、fill饭宾、includes
// find 滿足條件返回value批糟,終止循環(huán),未找到看铆,則value=undefined
let value = arr.find((value, index, arrx)=>{
return true/false
});
// findIndex 滿足條件返回index徽鼎,未找到,則返回-1
let flag = arr.findIndex((value,index,arrx)=>{
return true/false
})
// 填充數(shù)組弹惦,value:填充內(nèi)容否淤,起始位置start,end:結(jié)束位置
arr.fill(value, start, end)
// includes(value, index)方法肤频,value查找值叹括,index開始查找位置
let flag = arr.includes(value, index)
// 存在value返回true
對象擴展
新增方法Object.keys(); Object.values();Object.assign();
Object.is()
擴展運算符...
對象與數(shù)組
let a = {...obj};
let a = {...arr};
生成器函數(shù)(可以解決回調(diào)地獄)
function * sayHay(){
// todo
yield '第一段next';
// todo
yield '第二段next';
}
let iterator = sayHay();
iterator.next();// 第一段
iterator.next();// 第二段
iterator.next();// undefined
function getId(){
setTimeout(()=>{ let data ='19970920'; iterator.next(data) // 傳給下一個yield},1000)
}
function getName(id){
setTimeout(()=>{ let data ='xzp';},1000)
}
function * gen(){
let id = yield getId(); // id = 19970920
yield getName(id);
}
ES6集合set
let s = new set();
s.size 元素個數(shù) s.add('add') 新增元素 s.delete('刪除元素') 刪除元素
s.clear 清空集合 集合類似于數(shù)組
去重 let arr = [1,2,2,3,4,5,4,5];
let result = [...new Set(arr)];
交集 let arr2 = [5,6,4];
let result = [...new Set(arr)].filter(item=> new Set(arr2).has(item));
并集 let result = [...new Set([...arr, ...arr2])];
ES6 map
let m = new Map();
新增元素 m.set('name','lxz')
Promise對象
let p = new Promise((resolve, reject)=>{})
p.then(value=>{// resolve執(zhí)行函數(shù)
},reson=>{// reject執(zhí)行函數(shù)
}).catch(error=>{// 異常穿透
})
class的基本語法、繼承
ES6繼承:class 子類名 extends 父類名
class Xzp extends Person{
constructor(props){
super(props)
}
}
1.原型鏈繼承
function Xzp(){ this.love = "yyy" }
Xzp.prototype = new Person()
/* 子類實例宵荒,無法向父類構(gòu)造函數(shù)傳參汁雷、單一繼承、所有實例共享父類實例屬性 */
2.借用構(gòu)造函數(shù)繼承
function Xzp(name){
Person.call(this, name)
this.love = "yyy"
}
let xzp = new Xzp()
/* 無法實現(xiàn)構(gòu)造函數(shù)復(fù)用报咳,子類實例存在父類構(gòu)造函數(shù)的副本 */
3.組合繼承
4.原型式繼承
5.寄生式繼承
6.寄生組合式繼承