Mikä on ohittamista JavaScriptillä?

Ymmärtääksesi ylikuormituksen käsitettä JavaScript, tarkistakaamme ensin käsitys ohittamisesta kokonaisuutena.

Menetelmän ohittaminen on OOP-konsepti, joka liittyy läheisesti perintöön. Kun lapsiluokan menetelmä ohittaa saman nimen, parametrien ja paluutyypin vanhemman luokan menetelmän, sitä kutsutaan menetelmän ohittamiseksi. Muista myös, että tämä eroaa täysin menetelmän ylikuormituksen käsitteestä. Menetelmän ylikuormitus tapahtuu, kun on kaksi toimintoa, joilla on sama nimi, mutta eri parametrit.

Yritäkäämme nyt ymmärtää tämä käsite JavaScriptin näkökulmasta. Tiedämme, että JavaScripti on ”suhteellisen” ei oliokeskeinen. Sillä on esineiden käsite, joka määrittelee sen olio-suuntautuneeksi, mutta sillä ei ole luokkien käsitettä. Se on luonteeltaan prototyyppinen. Kyllä kyllä, kuulen sinun huutavan äänekkäästi, että voimme julistaa luokkia JavaScript-muodossa, mutta haluan muistuttaa, että tämä luokkamerkintä on vain syntaktinen sokeri taustalla olevaan prototyyppiseen arkkitehtuuriin.

Joten, JavaScript tukee menetelmän ohittamisen käsitettä. Ja se tekee sen hyvin omituisella tavalla. Loppujen lopuksi se on eniten ymmärretty kieli ohjelmointimaailmassa. JavaScript tukee ohittamista, mutta ei ylikuormitusta.

Huomaa - Käytämme kaikissa tämän artikkelin esimerkeissä selainten kehittäjäkonsolia. Avaa vain selaimen kehittäjätyökalut (Ctrl / Cmd + Shift + C) ja siirry kehittäjätyökalujen ikkunan Konsoli-välilehteen.

Se näyttää tältä Chromessa:

Tämä on leikkipaikka useimmille JavaScriptiin liittyville käsitteille. Käytämme tätä leikkipaikkaa koko tämän artikkelin ajan.

Kuinka ohittaminen toimii JavaScript-ohjelmassa?

JavaScript-tilassa kaikki objektit perivät Object-prototyypin. Kaikki objektit ovat objektin esiintymiä. Siksi aina, kun luot uuden objektin, JavaScript määrittelee automaattisesti _proto_ (prototyyppi) ominaisuuden uudelle objektille. Kun alaobjekti luodaan, siinä on taas _proto_-ominaisuus ja niin edelleen. Kun yrität käyttää menetelmää tai objektin ominaisuutta, JavaScript tarkistaa ensin, onko objektilla kyseinen menetelmä / ominaisuus. Jos ei, JavaScript tarkistaa, onko kohteen _proto_ siinä menetelmässä / ominaisuudessa. Jos ei, JavaScript tarkistaa, onko sen pääobjektissa _proto_ kyseinen menetelmä / ominaisuus. Se jatkaa ketjun hakua, kunnes joko menetelmä / ominaisuus löytyy tai objektin _proto_ löytyy ja etsitään. Esimerkiksi Date.prototype. ((Prototype)) on Object.prototype.

Katso ketju ylösalaisin. Näin ohittaminen toimii JavaScriptissä. Menetelmä ohittaisi edelleen pääobjektin menetelmän, vaikka se olisi Object-menetelmä. Voimme esimerkiksi ohittaa jopa ydintoiminnot, kuten luoda päivämääräobjektin.

Katsotaanpa tätä esimerkillä:

new Date(); //the JavaScript Date() method
//overriding the JavaScript Date() method
function Date()(
this.date = "This method overrides the default constructor of Date class.";
);
var date2 = new Date();
console.log(date2);

Ohitustavat JavaScript-tyypeissä

JavaScriptissä ei ole määritelty minkäänlaisia ​​ohittamistoimia. Ohjelmointikielen käyttäytymisen perusteella voimme kuitenkin sanoa, että JavaScript-ohitusmenetelmä toimii seuraavilla tavoilla.

1) Ensimmäinen käyttäytyminen

Ensimmäinen tapa on edellä havaittu tapa, kun määrittelimme menetelmän ohittaa JavaScriptin oletuspäivämäärärakentaja. Tämä on samanlainen kuin alla kuvattu kolmas tapa, koska kaikki JavaScript-objektit ovat Object-prototyypin esimerkki. Kolmas käyttäytyminen erottaa super-avainsanan käytön. Näemme enemmän, kun kuvaamme kolmatta käyttäytymistä.

Katsotaanpa toinen samanlainen esimerkki. Tällä kertaa ohitamme hälytystoiminnot. Hälytystoiminnon oletuskäyttäytyminen JavaScript-sovelluksessa on näyttää pieni valintaikkuna sivun yläreunassa viestin kanssa, jonka välitämme parametrina.

Nyt kun ohitamme sen omalla koodillamme, oletushälytystoimintoa ei enää soiteta.

function alert(msg) (
console.log(msg);
);
alert("This is an alert.");

2) Toinen käyttäytyminen

Toinen tapa on, kun yritämme ylikuormittaa JavaScriptin toimintoja. Muista, että JavaScript ei tue toimintojen ylikuormitusta. Joten sen sijaan, että JavaScript ylikuormittaisi toimintoasi, se korvaa kaikki toiminnon aiemmat määritelmät uusimmalla.

Katsotaanpa tämä käytännössä.

//Calculate area of rectangle
function calculateArea(x, y)(
return x*y;
)
//Calculate area of square
function calculateArea(a)(
return a*a;
)
console.log("Area of rectangle 2x3 is : " + calculateArea(2, 3));
console.log("Area of square 5x5 is : " + calculateArea(5));

Huomaa tulos. JavaScript soittaa aina funktion toiseen määritelmään ja palauttaa ensimmäisen parametrin neliön. Seuraavat parametrit jätetään huomioimatta.

3) Kolmas käyttäytyminen

Kolmas käyttäytyminen tulee kuvaksi, kun otamme luokit ja perintö JavaScriptiin. Kun lapsiluokka perii vanhemmaluokan menetelmät ja määrittelee omat metodit samalla nimellä, vanhemmaluokkamenetelmät ohitetaan. Tätä ei haluaisi todellisen elämän sovelluksissa. Haluamme, että vanhemmaluokkamenetelmämme ovat käytettävissä myös silloin, kun lastenluokkamenetelmät korvaavat ne. Joten, super avainsana tulee pelastukseen. Super-avainsanan avulla pääset vanhemman luokan menetelmiin.

Katsotaanpa tämä käytännössä.

//the parent class
class Person (
greet() (
console.log("Hello. I am a person.");
);
)
//the child class
class Employee extends Person (
greet() (
super.greet(); //calling parent class method via keyword 'super'
console.log("Hello. I am an employee.");
)
)
let per = new Person(); //parent class object
let emp = new Employee(); //child class object
per.greet();
emp.greet();

Palaa nyt ensimmäiseen käyttäytymisesimerkkiin ja kokeile super-avainsanan käyttämistä siellä. Huomaat, että se ei toimi. Tämä johtuu siitä, että kun loimme menetelmää ensimmäisessä esimerkissä, emme jatkaneet vanhempaa luokkaa. Loimme menetelmän maailmanlaajuisesti siten, että se ohittaa kaikki muut menetelmän määritelmät.

johtopäätös

Olkaamme tarkistaa ymmärrystämme menetelmästä, joka ylittää JavaScriptin. Opimme, että JavaScript tukee ohittamista, mutta ei ylikuormitusta. Jos yritämme ylikuormittaa menetelmiä, JavaScript ohittaa kaikki aiemmat määritelmät viimeisimmällä. Tämä pätee myös ydintoimintoihin!

Seuraavaksi näimme, kuinka voimme ohittaa menetelmät lasten luokissa ja päästä myöhemmin vanhemman luokan menetelmiin tarvittaessa. Tämä on erittäin hyödyllinen käsite, koska se antaa meille mahdollisuuden laajentaa vanhempien luokkien toimivuutta ja parantaa siten koodin uudelleenkäytettävyyttä.

Suositellut artikkelit

Tämä on opas ohittamiseen JavaScriptissä. Tässä keskustellaan siitä, kuinka ohitus toimii JavaScriptillä ja kuinka ohittamisen tyyppi JavaScriptissä on. Voit myös tarkastella seuraavaa artikkelia saadaksesi lisätietoja -

  1. Mitä Javascript voi tehdä?
  2. Mikä on JavaScript?
  3. Kuinka asentaa JavaScript
  4. Python-kehykset - mikä on python-kehys?
  5. Johdanto ohittamiseen C ++: ssa
  6. Johdanto ohitusoperaatioihin
  7. Ylivoimainen Java
  8. Menetelmän ylikuormitus C #: ssä
  9. Ylikuormitus ja ohittaminen C #: ssä