天天看點

ES6 的 class 繼承為什麼一定要寫 super()?super代表什麼?

  • ES6在繼承中強制要求,必須在子類調用super,因為子類的this是由父類得來的。
  • super等價于parent.prototype.constructor.call(sub)。
  1. super即可以做為函數調用,又可以做為對象使用。做為函數時,隻能在constructor内部調用。做為對象則可以在别的方法内調用。
  2. class B extends A {} super如果再靜态方法内調用,super是父類(A),如果方法裡有this,則指向該類(B),如果在原型方法内調用。super指向父類的原型(A),如果方法裡有this,則指向該執行個體的原型(B)
  3. 給super添加屬性或者修改,修改的是子類的屬性,因為this是子類。

繼續閱讀