ES6入門之class基本用法

基本概念

基本上,ES6 的class可以看作只是一個語法糖,它的絕大部分功能,ES5 都可以做到,新的class寫法只是讓對象原型的寫法更加清晰、更像面向對象編程的語法而已。


JS語言的傳統方法是通過構造函數定義并生成新對象的。是一種基于原型的面向對象系統。舉例來說:

const Foo = function(a,b) {
this.a = a;
this.b = b;
return this;
}
Foo.prototype = {
constructor: Foo,
print: function() {
  console.log(this.a + '' + this.b);
}
}
const foo = new Foo('hello','world').print();//hello world

以上就是es5的寫法,下面用ES6對它進行改寫來熟悉class的基本用法:

class Foo {
  constructor(a,b){
  this.a = a;
  this.b = b;
  return this;
  }
  print() {
    console.log(this.a +''+ this.b);
  }
}
const foo = new Foo('hello','world').print();//hello world

下面來簡要的的說明一下:

  1. Foo 中的constructor方法是構造方法,this關鍵字則代表實例對象。也就是說,ES5的構造函數Foo,對應ES6的Foo這個類的構造方法。
    2.Foo這個類除了構造方法還有一個print方法。注意定義‘類’的方法的時候,前面是不需要加上function這個關鍵字的。直接把函數定義放進去就好。方法之間是不需要加逗號的,加了都好會報錯。
    3.構造函數的prototype屬性,在ES6的類上面繼續存在。而且類的所有方法都定義在類的prototype屬性上面。
    console.log(Foo.prototype); //Object {constructor: function, print: function}
    4.定義在類中的方法都是不可被枚舉的。
    console.log(Object.keys(Foo.prototype));//[]
    5.constructor方法是類的默認方法,通過new命令生成的對象實例時,自動調用該方法。一個類必須有constructor方法。如果沒有顯式的定義,一個空的constructor方法會被默認添加。
    class Y{}; const y = new Y(); console.log(y);//function(){}一個空函數被創建就是因為默認添加了constructor
    6.生成類的實例對象的寫法,與ES5完全一樣,也是實用new命令。如果忘記添加new,直接調用class,將會報錯。

以上都是個人理解如有不對之處還望指正交流!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容