Mantošana ir centrālais jēdziens objektorientētajā programmēšanā, kas ļauj tev paplašināt esošās klases un izmantot to īpašības un metodes. JavaScript ir ieviesis jaunāku un izturīgāku mantošanas sintaksi ar ES6, kas ir daudz vieglāk apstrādājama nekā sākotnējās prototipa metodes. Šajā rokasgrāmatā es tev parādīšu, kā izmantot mantošanu JavaScript, izmantojot key word extends, un soli pa solim izskaidrošu, kā pareizi izsaukt bāzes klases konstruktoru ar super.

Galvenie secinājumi

  • Mantošana JavaScript tiek veikta, izmantojot extends key word.
  • Bāzes klases konstruktors jāizsauc ar super.
  • Instanctes mainīgos var atsaukties, izmantojot atslēgvārdu this atvasinātajā klasē.

Soli pa solim rokasgrāmata

Bāzes klases izveide

Lai uzsāktu mantošanu, vispirms izveidosim bāzes klasi ar nosaukumu Shape. Šajā klasē mēs definēsim konstruktoru un dažas metodes.

Šeit tu definē klasi Shape, kurai ir konstruktors. Tu vari šajā konstruktorā definēt mainīgus un funkcijas, kuriem var piekļūt citas klases.

Mantojums JavaScript: Ar ES6 uz mūsdienu klasēm

Atvasinātās klases izpēte

Pēc bāzes klases izveides tu tagad vari izveidot atvasinātu klasi, kas manto no Shape. Šajā piemērā mēs jauno klasi saucam par ConcreteShape.

Šajā atvasinātajā klasē mēs izmantojam extends key word, lai norādītu, ka ConcreteShape manto no Shape. Atvasinātās klases konstruktors izsauc bāzes klases Shape konstruktoru ar super(), kas ir nepieciešams, lai pareizi īstenotu mantošanu.

Atvasinātās klases instanciēšana

Tagad, kad mēs esam izveidojuši atvasinātu klasi, ir pienācis laiks izveidot šīs klases instanci.

Šeit tu izveido jaunu objektu myShape klasei ConcreteShape un nodod aprakstu konstruktoram. Pēc tam tu izsauc print metodi, kas izvada aprakstu.

Papildu īpašību pievienošana

Tu vari savai atvasinātajai klasei pievienot papildu īpašības vai pat metodes, kas ir specifiskas šai atvasinātajai klasei.

Šeit tu esi paplašinājis ConcreteShape klasi, pievienojot papildu parametrus konstruktoram.

Mantošanas izmantošana

Ar super key word tu vari izsaukt bāzes klases metodi describe, lai apvienotu bāzes klases un atvasinātās klases īpašības.

Kopsavilkums – Mantošana JavaScript: No ES6 līdz ES13

Šajā apmācībā tu esi uzzinājis, kā darbojas mantošana JavaScript, īpaši ar jauno class sintaksi. Tu esi redzējis, kā definēt klases, kā manto no bāzes klases un kā pareizi izsaukt konstruktoru. Šie mehānismi atvieglo tavu kodeksu uzturēšanu un sakārtotību, efektīvi atkārtoti izmantojot funkcijas.

Bieži uzdotie jautājumi

Kāds ir atšķirība starp super() un this?super() tiek izmantots, lai izsauktu bāzes klases konstruktoru, kamēr this piekļūst pašreizējās klases instancei.

Kāpēc ES6 klašu izmantošana ir labāka nekā prototipi?ES6 klases piedāvā skaidrāku un intuitīvāku sintaksi, kas atvieglo koda lasīšanu un izpratni.

Vai es varu būt vairākas bāzes klases?Nē, JavaScript neatbalsta vairāku mantošanu. Klase var mantojis tikai no citas klases.

Kas notiks, ja es neizsaucu super()?Ja tu neizsauci super(), tu saņemsi kļūdu, jo bāzes klases konstruktors, kurš inicializē to, kas ir nepieciešams klasei, netiks izpildīts.