class語法與繼承

紫Young菌發表於2018-04-20

#class是仿照其他語言,作為物件的模板,通過這個關鍵字,來定義類。 #實質是語法糖,可以通過建構函式來實現,例子:

class Point{
    constructor(x,y){
        this.x = x;
        this.y = y;
    }
    toString(){
        return '(' + this.x + ',' + this.y + ')';
    }
}
複製程式碼

可以通過Object.assign方法向類來新增一個或者多個方法,例:

class Point {
  constructor(){
    // ...
  }
}

Object.assign(Point.prototype, {
  toString(){},
  toValue(){}
});
複製程式碼

通過class構造的函式,必須使用new來呼叫。

例項的屬性除非顯示的定義在例項的本身(即class內使用this進行定義),否則就定義在原型上

類可以通過使用表示式的形式定義

const MyClass = class Me{
    getClassName(){
        return Me.name;
    }
}
MyClass.name;   //"Me"
Me.name    //ReferenceError: Me is not defined
複製程式碼

這個類的名字是MyClass而不是Me,後者只能用在Class內部程式碼,指代當前類。可以看書Me只在內部定義,如果內部沒有用到,也可以把Me省略掉

類內部沒有變數提升

new Foo(); // 報錯
class Foo {}
複製程式碼

需要先定義才能使用

相關文章