22.ES6新特性彙總
1.let :塊級作用域、沒有預解析、不能重複宣告同一個變數
const常量 NUM = 10 ;常量不可修改,如果是物件的話,可以修改值
2.解構賦值
eg1:obj = {data:123},可以直接將data從obj中解構出來:let {data} = obj;
eg2:let a = 0; let b = 1; 如何交換二者的值?:[a,b] = [b,a]
3.轉義字串
b="不錯"
a = `今天天氣${b}` //將變數直接${}差值表示式的方式,插入字串中
4.展開運算子【...】
let arr = [1,2,3]
arr2 = [0,...arr]
arr2----- >結果為[0,1,2,3]
PS:但是這裡是淺拷貝,傳址問題依然存在
5.箭頭函式()=>{}
①箭頭函式沒有this,this指向宣告時所在作用域的this;
②箭頭函式沒有arguments,因此可以寫為
fn = (...arg)=>{} ------------------------fn(1,2,3,4);
③不可以作為建構函式
6.Array相關方法
a.Array.isarray() / instandof 用來檢測是否為陣列;
b.Array.from()將類陣列(Nodelist)轉為陣列
c.Array.findIndex(function(item){ //尋找下標,返回首次滿足條件的下標,不存在返回-1;
return item==" xxx "
} )
d.Array.find()返回首次滿足條件的項
7.物件方法:set/get
obj= {
n = 0;
set a{……}; //設定a會觸發set,獲取a會觸發get
get a{……};
}
8.屬性名錶達式
a = {n:"哈哈哈哈"} //n為一個str
a = {[n]:"哈哈哈哈"} //n可以是變數傳入
9.keys/values
Object.keys(obj);//可以拿到obj物件的所有key
Object.values(obj);//可以拿到obj物件的所有value
10.let a= 10; let b ="10"; Object.is(a,b);-------false,不全等
let a = 10-"a"; let b = 10-"b"; Object.is(a,b);-------true,因為可以檢測NaN
11.物件凍結 Object.freeze(obj) //淺凍結
之後,其他程式碼不可以修改或者刪除obj物件中的任何屬性
12.自動去重
arr = [1,1,2,2,3]
Array.from(new Set(arr));
ES6提供了 Set,類似與陣列,但是自動去重
具備方法:add ,delete, has(), clear ,size = length
13.for of 遍歷每一項
arr = [1,4,5]
for(let s of arr){console.log(s)}
14.forEach
arr.forEach((item)=>{
console.log(item)//遍歷arr中的每一項
})
15.類class 和類繼承extends
class Person {
constructor(name){
this.name = name;
}
say(inner){
console.log(`${this.name}說:${inner}`);
}
static fn(){
console.log("靜態方法");
}
}
let p = new Person("maodou");
p.say("貓咪最可愛");
Person.fn();//類的靜態方法只給類自身用,動態方法給例項化物件用
//類繼承也很簡單
class Study extends Person {
coding(){
console.log("特別會寫程式碼");
}
}