1. 程式人生 > >22.ES6新特性彙總

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("特別會寫程式碼");
    }
}

16,promise(非同步處理)

17.新的資料型別Symbol