在線上課程,老師寫的ES6程式碼如下:
class Person6{
constructor(name,yearOfBirth,job){
this.name = name;
this.yearOfBirth = yearOfBirth;
this.job = job;
}
calculateAge(){
var age = new Date().getFullYear - this.yearOfBirth;
console.log(age);
}
}
class Athlete6 extends Person6{
constructor(name,yearOfBirth,job,olymicGames,medals){
super(name,yearOfBirth,job);
this.olymicGames = olymicGames;
this.medals = medals;
}
wonMedal(){
this.medals++;
console.log(this.medals);
}
}
const johnAthlete6 = new Athlete6('John',1990,'swimmer',3,10);
johnAthlete6.wonMedal();
johnAthlete6.calculateAge();
我想請教各位高手的有以下幾點:
1.class Athlete6 extends Person6{
.....
super(name,yearOfBirth,job);
上述程式碼我只模糊的知道這樣用extend 和 super 就可以繼承父類別,但我不懂為什麼,特別是super的部分,為什麼要寫super這一段??老師其實也有用ES5的程式碼來解釋,但我還是聽不懂,可否請各位高手簡單解釋背後原理。
2.Athlete6怎麼從Person6繼承到calculateAge()方法??
是透過extend? 還是透過super?
還請各位高手不吝解釋,非常感謝!
https://codepen.io/hsu-ping-feng/pen/bzVJob?editors=1111
等價的兩種繼承語法。上面是class語法,下面是古典的繼承方法,你可以比較一下看看。