Klassearv i JavaScript

Klassearv i JavaScript
Klasse arv i JavaScript er en verdifull funksjon som tillater gjenbrukbarhet av kode. Ved å bruke klassearven, vil barneklassen ha all tilgang til egenskapene og metodene til foreldreklassen i et JavaScript -program. Det lar deg også lage en barneklasse som arver funksjonaliteten til foreldreklassen, samtidig som du kan overstyre den.

Denne oppskrivningen vil diskutere klassearv i JavaScript. Vi vil også forklare Skyggemetoder og arver statiske metoder Bruke klassearven i JavaScript. Videre vil hver av de spesifiserte seksjonene bli demonstrert ved hjelp av eksempler. Så la oss starte!

Klassearv i JavaScript

Mekanismen der en klasse arver en annen klasses metoder og egenskaper er kjent som Klasse arv. “Utgangspunkt" eller "Foreldre”Klasse er den hvis metoder og egenskaper er arvet, mens“Avledet" eller "Barn”Klasse arver funksjonaliteten til foreldreklassen:

strekker”Søkeord brukes til å etablere klassearven mellom foreldre og barneklasse, og“super”Nøkkelord brukes for å få tilgang til metodene og egenskapene til foreldreklassen.

Eksempel: Klassearv i JavaScript

I det undergitte eksemplet vil vi definere to klasser: Person og Ansatt, og skape klassearven mellom dem ved å bruke “super”Og“strekker”Nøkkelord.

Først av alt vil vi definere en foreldre- eller baseklasse som heter “Person”Å ha en konstruktør og en vistame () -metode:

klasseperson
konstruktør (navn)
dette.Navn = navn;

vistame ()
konsoll.logg ('Mitt navn er' + dette.Navn);

I neste trinn vil vi lage barneklassen som heter “Ansatt”Som vil ha en konstruktør og en“DisplayStatus ()”Metode. Å etablere et klassearveforhold med “Person”Klasse, du må bruke“strekker”Søkeord og spesifiser navnet på foreldreklassen, som er“Person”I vårt tilfelle. Etter å ha gjort det, “Ansatt”Klasse vil arve“Person”Klassens metoder og egenskaper.

Også i "Ansatt”Klassekonstruktør, vi vil påkalle”super()”Å ringe konstruktøren til“Person”Klasse mens du passerer“Navn”Argument:

klasseansatt utvider person
konstruktør (navn)
Super (navn);

displayStatus ()
konsoll.logg ('Jeg er ansatt');

Nå vil vi lage en “ansatt”Objekt av“Ansatt”Klasse og vil passere“Jack”Som navn argumenter i konstruktøren:

La ansatt = ny ansatt ('Jack');

Den skapte “ansatt”Objekt arvet alle metoder og egenskaper for“Person”Klasse. Nå vil vi påkalle "vistame ()”Metode for“Person”Klasse med det:

ansatt.vistame ();

Til slutt vil vi kalle “DisplayStatus ()”Metode for“Ansatt”Klasseobjekt:

ansatt.displayStatus ();

Ta en titt på det undergitte bildet av den medfølgende koden og utdataene:

Som super () initialiserer "dette”Objekt, du må påkalle det først før du får tilgang til det. Imidlertid, hvis du prøver å få tilgang til "dette”Før du utfører Super (), vil det gi deg en feil.

For eksempel for å initialisere "alder”Eiendom til“Ansatt”Klasse i konstruktøren, vil vi kalle“super()”Først og får tilgang til“dette”Objekt:

klasseansatt utvider person
konstruktør (navn, alder)
Super (navn);
dette.alder = alder;

vise()
konsoll.Logg ("Jeg er en ansatt");

getage ()
Returner dette.alder;

Nå, på tidspunktet for å lage "Ansatt1”Objekt av“Ansatt”Klasse, vi vil passere“Jack" som Navn og “29" som alder argument til konstruktøren:

La ansatt1 = ny ansatt ('Jack', 29);

Deretter, etter initialisering, vil vi påkalle "Getage ()”Metode for vår ansattklasse for å se alderseiendomsverdien:

konsoll.Logg (ansatt1.getage ());

Sjekk ut utdataene fra det ovennevnte eksemplet:

Skyggemetoder ved hjelp av klassearv i JavaScript

Metoder med samme navn kan defineres i både foreldre- og barneklasser. I en slik situasjon, når du påkaller metoden til et barneklasseobjekt, vil den skygge metoden som er til stede i foreldreklassen.

For eksempel det undergitte "Student”Klasse er barneklassen for“Person”Og omdefinerer“vistame ()”Metode:

Klassestudent utvider personen
konstruktør ()
Super ('Jack');

vistame ()
konsoll.Logg ('Jeg heter Jack');

Nå, “vistame ()”Metode eksisterer i barneklassen og også i foreldreklassen. Så når du ringer til “vistame ()" med "Student”Klasseobjekt, vil det påkalle den viste navn () -metoden definert i barneklassen:

La student1 = ny student ();
Student1.vistame ();

Her er eksempelkoden med utdataene:

Hvis du vil påkalle foreldreklassemetoden med samme navn, i barneklassen, må du skrive ut “super.MethodName (argumenter)”. For eksempel vil vi kalle "vistame ()”Metode for“Person”(Foreldre) klasse ved å legge til linjen“super.vistame ()”I vår barneklasse vistame () -metode:

vistame ()
super.vistame ();
konsoll.log ('barnefunksjon');

Nå, når barneklasseobjektet påkaller “vistame ()”, Det vil gå gjennom kroppen til Child Class vistame () -metoden, og ring deretter foreldreklassen vist () -metoden () metoden (). Etter å ha fullført utførelsen av foreldreklassen vistame () -metoden, vil kontrollen bli flyttet tilbake til vistam () -metoden for barneklassen:

La student1 = ny student ();
Student1.vistame ();

I følgende bilde kan du se utgangen fra "vistame ()”Metode:

Arver statiske medlemmer som bruker klassearv i JavaScript

Barneklassen kan også arve de statiske metodene og egenskapene til foreldreklassen. La oss hjelpe deg med å forstå dette konseptet ved å demonstrere et eksempel.

I det følgende eksemplet vil vi definere en statisk ”Hei Verden()”Metode i samme”Person”Foreldreklasse som ganske enkelt vil sende ut“Hei Verden”Streng når du kaller det:

klasseperson
konstruktør (navn)
dette.Navn = navn;

vistame ()
konsoll.logg ('Mitt navn er' + dette.Navn);

statisk helloWorld ()
konsoll.Logg ('Hello World');

I neste trinn vil vi lage “Ansatt”Som barneklasse av“Person”, Så det kan arve metoden og egenskapene til foreldreklassen, inkludert“Hei Verden()”Statisk metode:

klasseansatt utvider person
displayStatus ()
konsoll.logg ('Jeg er ansatt');

Deretter vil vi påkalle HelloWorld () statisk metode gjennom “Ansatt”Klasse:

Ansatt.Hei Verden();

Den ansatte.HelloWorld () -metoden vil bli utført samme som personen.HelloWorld () Metode:

Konklusjon:

Du kan bruke strekker nøkkelord for å lage en klassearv i JavaScript og super nøkkelord for å referere til foreldreklassen. Med klassearvemekanismen i JavaScript kan barneklassen få tilgang til foreldreklassens metoder og egenskaper. Denne oppskrivningen diskuterte klassearv i JavaScript. Vi har også forklart skyggemetoder og arver statiske metoder ved bruk av klassen i JavaScript. Videre er hver av de spesifiserte seksjonene demonstrert ved hjelp av eksempler.