Paveldėjimas yra centrinis konceptas objektiniu programavimu, leidžiantis tau išplėsti esamas klases ir naudoti jų savybes bei metodus. JavaScript su ES6 pristatė naujesnę ir patikimesnę paveldėjimo sintaksę, kuri yra daug lengviau valdoma nei originalūs prototipo metodai. Šiame vadove aš tau parodysiu, kaip naudoti paveldėjimą JavaScript su extends raktiniu žodžiu, ir žingsnis po žingsnio paaiškinsiu, kaip teisingai iškviesti pagrindinės klasės konstruktorių su super.
Svarbiausi atradimai
- Paveldėjimas JavaScript vykdomas naudojant extends raktinį žodį.
- Pagrindinės klasės konstruktorius turi būti iškviečiamas su super.
- Instances kintamieji gali būti referencijuojami naudodami raktinį žodį this iš išvestinės klasės.
Žingsnis po žingsnio vadovas
Pagrindinės klasės kūrimas
Norėdami pradėti su paveldėjimu, pirmiausia sukursime pagrindinę klasę pavadinimu Shape. Šioje klasėje mes apibrėšime konstruktorių ir keletą metodų.
Čia tu apibrėši klasę Shape, kuri turi konstruktorių. Tu gali šiame konstruktoriuje apibrėžti kintamuosius ir funkcijas, prie kurių gali pasiekti kitos klasės.

Išvestinės klasės tyrimas
Po pagrindinės klasės sukūrimo dabar gali sukurti išvestinę klasę, kuri paveldi iš Shape. Šiame pavyzdyje mes pavadinsime naują klasę ConcreteShape.
Šioje išvestinėje klasėje mes naudojame extends raktinį žodį, kad nurodytume, jog ConcreteShape paveldi iš Shape. Išvestinės klasės konstruktorius iškviečia pagrindinės klasės Shape konstruktorių su super(), kas būtina teisingai įgyvendinant paveldėjimą.
Išvestinės klasės instanciavimas
Dabar, kai mes sukūrėme išvestinę klasę, laikas sukurti šios klasės instanciją.
Čia tu sukuri naują objektą myShape iš ConcreteShape klasės ir perduodi aprašymą konstruktoriui. Tada tu iškviesti print metodą, kuris išveda aprašymą.
Papildomų savybių pridėjimas
Tu gali pridėti daugiau savybių prie savo išvestinės klasės arba netgi metodų, kurie yra specifiniai šiai išvestinei klasei.
Čia tu išplėtėte ConcreteShape klasę pridėdami papildomus parametrus prie konstruktoriaus.
Paveldėjimo naudojimas
Naudodamas super raktinį žodį, tu gali iškviesti pagrindinės klasės describe metodą, kad sujungtum tiek pagrindinės klasės, tiek išvestinės klasės savybes.
Santrauka – Paveldėjimas JavaScript: Nuo ES6 iki ES13
Šiame vadove tu sužinojai, kaip veikia paveldėjimas JavaScript, ypač su nauja class sintakse. Tu pamatėi, kaip apibrėžti klases, kaip paveldi iš pagrindinės klasės ir kaip teisingai iškviesti konstruktorių. Šie mechanizmai padaro tau lengviau išlaikyti savo kodo bazę švarią ir priežiūrai tinkamą, efektyviai pakartotinai naudojant funkcijas.
Dažniausiai užduodami klausimai
Koks skirtumas tarp super() ir this?super() naudojamas tam, kad iškviestų pagrindinės klasės konstruktorių, tuo tarpu this prieina prie dabartinės klasės instancijos.
Kodėl ES6 klasių naudojimas yra geresnis nei prototipai?ES6 klasės siūlo aiškesnę ir intuityvesnę sintaksę, kuri palengvina kodo skaitymą ir supratimą.
Ar galiu turėti kelias pagrindines klases?Ne, JavaScript nepalaiko kelių paveldėjimo. Klasė gali paveldėti tik iš vienos kitos klasės.
Kas nutiks, jei neiškviesiu super()?Jei tu neiškviesi super(), gausi klaidą, nes pagrindinės klasės konstruktorius, kuris inicializuoja viską, kas reikalinga klasei, nebus vykdomas.