一. 箭頭函數
箭頭函數表達式的語法比函數表達式更簡潔,並且沒有自己的this,arguments,super或 new.target。這些函數表達式更適用於那些本來需要匿名函數的地方,並且它們不能用作構造函數。
傳統函數與箭頭函數的對比
傳統函數:
function foo(){}
let foo=function(){}
箭頭函數
let foo=()=>函數執行代碼
問題 : 帶有參數及返回值的箭頭函數如何定義?
答 :
傳統
function foo(num){
return num;
}
箭頭函數:
let foo=num(形參)=>num(返回值);
多個參數甚至多條函數執行體的結構
let foo = (a,b) => {let c=100;console.log(a+b+c)};
注意:多個參數需要使用括號,多個函數執行體需要使用大括號
箭頭函數使用時需要注意的 :
-
箭頭函數中this取決於函數的定義,而不是調用
-
nodejs環境下this表示函數所有普成員
-
箭頭函數不可以使用new
-
箭頭函數不可以使用argument獲取參數
二.類與繼承
在ES6中,class (類)作爲對象的模板被引入,可以通過 class 關鍵字定義類。
class 的本質是 function。
// 匿名類
let Example = class {
constructor(a) {
this.a = a;
}
}
// 命名類
let Example = class Example {
constructor(a) { //實例
this.a = a;
}
}
//實例的語法直接可以寫在類的內部
// 方法的語法結構: 方法名稱(){方法體}
// 在實例方法的內部的this是實例對象自己
// 在使用ES6中的class模擬對象時 類的內部每一個成員之間不能使用逗號
注意 : ES6創建的類,不允許直接調用,在ES5中,構造函數是可以直接運行的,
但在ES6中不行,轉碼的構造函數中有_classCallCheck語句防止代碼直接運行