1. 程式人生 > >ES6學習筆記(二):教你玩轉類的繼承和類的物件

ES6學習筆記(二):教你玩轉類的繼承和類的物件

繼承

程式中的繼承: 子類可以繼承父類的一些屬性和方法

class Father { //父類
  constructor () {
    }
    money () {
    console.log(100)
  }
}
class Son extends Father {  //子類繼承父類
}
let son = new Son()
son.money() // 100
son.

super關鍵字

super關鍵字用於訪問和呼叫物件父類上的函式,可以通過呼叫父類的建構函式,也可以呼叫父類的普通函式

class Father { //父類
  constructor (x, y) {
    this.x = x
    this.y = y
    }
    money () {
    console.log(100)
  }
  sum () {
    console.log(this.x + this.y)
  }
}
class Son extends Father {  //子類繼承父類
    constructor (x, y) {
        super(x, y) //呼叫了父類中的建構函式
  }
}
let son = new Son(1,2)
son.sum() // 3
son.

繼承的特點:

  1. 繼承中,如果例項化子類輸出一個方法,先看子類有沒有這個方法,如果有就先執行子類,(就近原則)
  2. 繼承中,如果子類裡面沒有,就去查詢父類有沒有這個方法,如果有,就執行父類的這個方法
  3. 在子類中,可以用super呼叫父類元素的方法
class Father {
    say() {
    return '我是父元素'
  }
  sing() {
    return '父元素唱一首歌'
  }
    
}
class Son extends Father {
    say() {
    console.log('我是子元素')
  }
  sing() {
    console.log(super.sing())
  }
}
var son = new Son()
son.say() //我是子元素
son.sing() //

子元素可以繼承父元素的方法的同時,子元素也可以擴充套件自己的其他方法,子類在建構函式中用super呼叫父類的構造方法時候,必須放在子類的this之前呼叫

class Father {
    constructor(x, y) {
    this.x = x
    this.y = y
  }
  sum() {
    console.log(this.x + this.y)
  }
}

class Son extends Father {
    constructor(x,y) {
     //利用super 呼叫父類的建構函式
    super(x,y)
    this.x = x
    this.y = y
  }
  subtract() {
    console.log(this.x - this.y)
  }
}
let son = new Son(5,3)
son.subtract() // 2
son.sum() //8

ES6中的類和物件的4個注意點:

  1. 在ES6中類沒有變數提升,所以必須先定義類,才能通過類例項化物件
  2. 類裡面的共有屬性和方法一定要加this使用
  3. 類裡面的this指向問題
  4. constructor裡面的this指向例項物件,方法裡面的this向這個方法的呼叫者

    總結

    這篇文章主要分享了,關於類的繼承、繼承需要的用到的extends,super、ES6中的類和物件的注意點等。
    如果想了解更多,請掃描二維碼