箭頭函數(shù) () =>{}? || =>
? ? 箭頭函數(shù)書寫簡便,大大簡化了編程的繁瑣操作,更適合于函數(shù)式編程。
? ? 除此之外,箭頭函數(shù)最大的特性是沒有自己的this,也沒有普通函數(shù)自動綁定的arguments等屬性,因為箭頭函數(shù)首先是一個匿名函數(shù),因此一般是在作為回調(diào)出現(xiàn),所以箭頭函數(shù)的this指向的是函數(shù)的定義者,而非調(diào)用者,所以使用call() apply() 或者bind()等方法綁定箭頭函數(shù)的this是無s效的。
? ? 箭頭函數(shù)的寫法就是小括號+箭頭+花括號,若沒有參數(shù)也可省略小括號。
? ? => / ()=>{}/ =>{}
rest參數(shù)
? ? es6引入了rest參數(shù),即我們常見的三個點 ...params ,rest參數(shù)與一個變量名搭配使用,用來獲取多余的參數(shù),這些參數(shù)會組成一個數(shù)組,值得注意的是,rest參數(shù)必須是作為最后一個參數(shù)傳入 ,否則將報錯。
例如 function(param1,param2,param3,param4){} ?=>function(...params){}
...params = [param1,param2,param3,param4]
es6的插值 ?${}
? ? 寫法:${},插值就是我們在es6之前的語法中的字符串拼接的功能,這一寫法也是現(xiàn)在插入數(shù)據(jù)的主要寫法,例如angular和vue的主流框架在文本中插入數(shù)據(jù)就是使用的雙大括號{{}},插值就是“”+“”的簡寫的方式,等同于${item}${index},插值大括號里面不僅能夠放變量,還可以進行數(shù)據(jù)計算,或是變量的轉(zhuǎn)譯 ${var a as item}
類 ?class
? ? es6中引入了類的概念,類的引入使得js具有了塊級作用域,在class包裹中的函數(shù)作用域是一個獨立的上下文模塊域。
? ? 使用方法也很簡單,定義一個模塊作為一個類,聲明其中的構(gòu)造函數(shù)construtor,并聲明其中的私有屬性private或公屬性public?
這一點上js也越來越向java靠攏,其中也有super關(guān)鍵字,唯一的區(qū)別在于類里面的寫法是js的語法,。
? ? 既然引入了類,那么繼承的方式也從java借鑒過來了,以往。js的繼承就是讓一個子構(gòu)造函數(shù)的原型指向父構(gòu)造函數(shù)的實例,然后在該子構(gòu)造函數(shù)的內(nèi)部聲明該構(gòu)造函數(shù)的指向,這種繼承方式太過麻煩,又顯得很冗余,所以es6中提供extends關(guān)鍵字,作為實現(xiàn)繼承的方式,使用方式也是和java里的寫法一樣,class A extends class B(...params){}
? ? es6的語法es5中的差異差不多就是上述這些,但是基本的思想是不變的,變的不過是外在的形式,但是我們說,所有的變化都是為了更好的服務我們的工作。保持努力,努力向前。