1. 程式人生 > >ES6 類\繼承\介面

ES6 類\繼承\介面

super方法

子類必須在constructor方法中呼叫super方法
呼叫super方法必須放到this初始化例項屬性的前面:因為子類沒有自己的this物件,是繼承父類的this物件.ES5的繼承,實質是先創造子類的例項物件this,然後再將父類的方法新增到this上面(Parent.apply(this).ES6的繼承機制完全不同,實質是先創造父類的例項物件this(所以必須先呼叫super方法),然後再用子類的建構函式修改this
super作為函式時,指向父類的建構函式。super()只能用在子類的建構函式之中,用在其他地方就會報錯:super()在這裡相當於ExtendStuParent.prototype.constructor.call(this)。
super作為物件時,指向父類的原型物件:

ES6 規定,通過super呼叫父類的方法時,super會繫結子類的this。由於繫結子類的this,所以如果通過super對某個屬性賦值,這時super就是this,賦值的屬性會變成子類例項的屬性。

類的prototype屬性和proto屬性

Class的取值函式(getter)和存值函式(setter)

new.target屬性

如果建構函式不是通過new命令呼叫的,new.target會返回undefined,因此這個屬性可以用來確定建構函式是怎麼呼叫的
子類繼承父類時,new.target會返回子類:通過這個原理,可以寫出不能獨立使用、必須繼承後才能使用的類。