Arve en annen klasses metoder ved hjelp av utvid nøkkelord i JavaScript

Arve en annen klasses metoder ved hjelp av utvid nøkkelord i JavaScript
Med tilleggsfunksjonene og den enklere klassesyntaksen, gjorde ES6 JavaScript mye enklere. Før dette ble JavaScript -arv muliggjort med objektet.Prototypeegenskaper som var veldig annerledes og sammensatt i forhold til Java og C ++ og andre slike programmeringsspråk.

I dette innlegget skal vi se nærmere på arv i JavaScript ved å bruke "strekker”Nøkkelord i JavaScript. Eksempler hjelper til med å forstå konseptet sterkt, så vi kommer til å gi eksempler også. La oss komme i gang.

Hva er arv?

Som alle andre programmeringsspråk er arv et veldig viktig konsept i JavaScript-objektorientert programmering. Den enkleste definisjonen av arv er når metoder og attributter fra en foreldreklasse eller en baseklasse blir kopiert eller arvet til avledede eller barneklasser. Det er veldig nyttig som på grunn av dette er vi i stand til å oppnå gjenbrukbarhet. Kode gjenbrukbarhet betyr gjenbruk av attributter/egenskaper og metoder for en klasse i en annen nyopprettet klasse.

Utvider nøkkelord

Nå som vi har sett på hva arv er. La oss diskutere hvordan vi kan oppnå dette. Som nevnt tidligere, pleide vi å oppnå arv via objekt.prototype som kalles prototypal arv. Imidlertid ble det fulgt en enklere tilnærming som brukte utvidelsesnøkkelordet.

Funksjonen til å utvide nøkkelord brukes til å lage en avledet klasse/barneklasse fra en foreldreklasse/baseklasse. Barnklassen kan arve enhver klasse, og den klassen blir foreldreklassen. Når vi arver, i barneklassen, vil alle metodene og attributtene bli arvet fra foreldreklassen.

Syntaks:

Klassen Childclass utvider ParentClass;

Det må huskes at det bare fungerer i ECMASCRIPT 2015 (ES6) versjon.

Hvilken nettleser støtter nøkkelordet "utvid"?

La oss nå se hvilke nettlesere som støtter "utvid" nøkkelordet.

Krom Kant Firefox Safari Opera
49.0 1. 3.0 45.0 9.0 36.0

Nå som vi har dekket teorien om arv og "utvidet" nøkkelord, la oss implementere det i JavaScript.

Eksempel:

classAnimalName
konstruktør (navn)
dette.AnimalName = Navn;

tilstede()
return'name: ' + dette.AnimalName;


classanimalExtendsAnimalName
konstruktør (navn, mengde)
Super (navn);
dette.mengde = mengde;

whatanimal ()
Returner dette.Present () + "Mengde:" + dette.mengde;


Const dyr = nytt dyr ("kylling", 5);
Varsel (dyr.whatanimal ());

I dette eksemplet har vi en foreldreklasse “AnimalName” der vi setter navnet på dyret. Den har en metode med navnet “Present ()”. Vi har en annen klasse "Animal" som utvider "AnimalName". Det betyr at "Animal" -klassen er en barneklasse og vil arve alle “AnimalName” -metodene. Vi har en metode i "Animal" -klassen med navnet "WhatAnimal ()". I dette arver vi “AnimalName” -metoden “Present” og opprettet deretter en forekomst av “Animal” -klassen. Nå når vi varsler den som vil fungere som den vil fungere ordentlig.

Det er verdt å merke seg at vi brukte nøkkelordet for super () for å referere til foreldreklassen i eksemplet ovenfor. Når vi kaller Super () -metoden, kaller vi faktisk foreldreklassekonstruktøren, og vi kan få tilgang til alle foreldrenes metoder og egenskaper takket være super nøkkelordet.

Bruk av getter og setter i arv

Når vi bruker klasser og arv, er det nesten umulig å ikke bruke getters og settere. Det er veldig nyttig å hente eller oppdatere egenskaper før du kommer tilbake eller setter disse egenskapene.

Det "få" nøkkelordet brukes til å hente eller få en eiendom. Nøkkelordet "sett" brukes til å oppdatere eller angi en eiendom.

For eksempel:

classAnimalName
konstruktør (navn)
dette._animalName = navn;

get getAnimalName ()
Returner dette._animalname;

set setanimalName (nam)
dette._animalName = nam;

tilstede()
return'name: ' + dette._animalname;


classanimalExtendsAnimalName
konstruktør (navn, mengde)
Super (navn);
dette.mengde = mengde;

whatanimal ()
Returner dette.getanimalname;


const dyr = nytt dyr ("kylling", 5);
Varsel (dyr.whatanimal ());

I dette eksemplet brukte vi understreket karakter fordi vi ønsket å skille getter/setter fra selve attributtet/eiendommen for bedre forståelse. Dette eksemplet er identisk med det forrige, med unntak av at "AnimalName" -klassen nå har en getter og setter. Vi henter dyrenavnet fra foreldreklassen gjennom get -metoden som er "getanimalname".

Vi kan også sette en eiendom på samme måte ved å legge til bare en linje ved hjelp av koden ovenfor.

classAnimalName
konstruktør (navn)
dette._animalName = navn;

get getAnimalName ()
Returner dette._animalname;

set setanimalName (nam)
dette._animalName = nam;

tilstede()
return'name: ' + dette._animalname;


classanimalExtendsAnimalName
konstruktør (navn, mengde)
Super (navn);
dette.mengde = mengde;

whatanimal ()
Returner dette.getanimalname;


const dyr = nytt dyr ("kylling", 5);
dyr.setanimalName = "ku";
Varsel (dyr.whatanimal ());

Utgangen vil nå bli oppdatert til “Cow”.

Konklusjon

Arv er et av kjernekonseptene for objektorientert programmering, og definisjonen av arv kan defineres som når metodene og attributtene fra en foreldre- eller baseklasse blir kopiert/arvet til et barn eller avledet klasse og kan oppnås ved hjelp av nøkkelordet strekker I JavaScript.

Hvis du leser denne artikkelen grundig, er jeg ganske sikker på at dere har en ide om hvordan du bruker utvidet nøkkelordet i å få tilgang til foreldreklassemetodene og attributtene i JavaScript. Vi forklarte arv, utvid nøkkelord, angi nøkkelord, få nøkkelord, og hvilken nettleser som støtter utvidelsens nøkkelord. Prototypisk arv, som det fremgår av denne artikkelen er utdatert og sammensatt. Extend er mer enkel og lik andre språk som Java, C ++, etc.