Kaj je prevladujoče v JavaScript?

Da bi razumeli koncept preglasitve v JavaScript, najprej preučimo koncept preglasitve kot celote.

Preveriranje metode je koncept OOP, ki je tesno povezan z dedovanjem. Ko metoda nadrejenega razreda preglasi metodo istoimenskega imena, parametrov in vrnilnega razreda nadrejenega razreda, se imenuje kot preglasitev metode. Ne pozabite tudi, da se to popolnoma razlikuje od koncepta preobremenitve metode. Preobremenitev metode se zgodi, kadar obstajata dve funkciji z istim imenom, vendar različnimi parametri.

Zdaj pa poskusimo razumeti ta koncept z vidika JavaScript. Vemo, da je JavaScript »razmeroma« neobjektno usmerjen. Ima koncept Objects, ki ga opredeljuje kot objektno orientiran, nima pa koncepta Class. Je prototipske narave. Da, slišim, kako glasno kričite, da lahko razglasimo razrede v JavaScript, vendar naj vas opomnim, da je ta zapis o razredu zgolj sintaktični sladkor osnovne prototipne arhitekture.

Tako JavaScript podpira koncept prevladovanja metod. In to počne na zelo čudne načine. Konec koncev gre za najbolj napačno razumljen jezik v programskem svetu. JavaScript podpira preglasitev, vendar ne preobremenitev.

Opomba - V vseh primerih v tem članku bi uporabljali konzolo za razvijalce brskalnikov. Preprosto odprite orodja za razvijalce brskalnika (Ctrl / Cmd + Shift + C) in pojdite na zavihek Console v oknu z orodji za razvijalce.

V Chromeu je videti tako:

To je igrišče za večino konceptov, povezanih z JavaScript. V tem članku bomo uporabljali to igrišče.

Kako Overriding deluje v JavaScript?

V JavaScriptu vsi predmeti podedujejo od prototipa Object. Vsi objekti so primeri predmeta. Tako kadar koli ustvarite nov predmet, JavaScript samodejno določi lastnost _proto_ (prototip) za nov objekt. Ko je ustvarjen otroški objekt, ima spet lastnosti _proto_ in tako naprej. Zdaj, ko poskušate dostopati do metode ali lastnosti predmeta, JavaScript najprej preveri, ali ima objekt to metodo / lastnost. Če tega ne stori, JavaScript preveri, ali ima _proto_ predmeta to metodo / lastnost. Če ni, JavaScript preveri, ali ima _proto_ nadrejenega predmeta to metodo / lastnost. Nadaljuje iskanje po verigi, dokler ne najdemo bodisi metode / lastnosti ali ne srečamo _proto_ objekta. Npr. Datum.prototip. ((Prototip)) je objekt.prototip.

Zdaj glejte verigo na glavo. Tako deluje prevladovanje v JavaScript. Metoda bi še naprej preglasila metodo nadrejenega predmeta, tudi če je metoda Objekt. Na primer, lahko celo preglasimo jedro funkcionalnosti, kot je ustvarjanje predmeta Datum.

Poglejmo to na primeru:

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);

Vrste preglasitve v JavaScript

V JavaScript ni določenih vrst prevladovanja. Vendar lahko na podlagi vedenja programskega jezika rečemo, da metoda preglasitve v JavaScript deluje na naslednje načine.

1) Prvo vedenje

Prvi način je tisti, ki smo ga videli zgoraj, ko smo določili način za preglasitev privzetega konstruktorja datuma JavaScript. To je na podoben način, kot je prikazano spodaj, saj so vsi objekti v JavaScript primere prototipa Object. Tretje vedenje razlikuje od uporabe ključne besede super. Več bomo videli, ko bomo ponazorili tretje vedenje.

Poglejmo še en podoben primer. Tokrat bi preglasili funkcijo opozorila. Privzeto vedenje funkcije opozorila v JavaScript je prikazati majhno pogovorno okno na vrhu strani s sporočilom, ki ga posredujemo kot parameter.

Zdaj, ko jo preglasimo s svojo kodo, privzeta funkcija opozorila ni več klicana.

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

2) Drugo vedenje

Drugi način je, ko poskušamo preobremeniti funkcije v JavaScript. Ne pozabite, da JavaScript ne podpira funkcije preobremenitve. Torej bi JavaScript namesto preobremenitve svoje funkcije preglasil vse prejšnje definicije vaše funkcije z najnovejšo.

Naj to vidimo v akciji.

//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));

Opazite rezultat. JavaScript vedno pokliče drugo definicijo funkcije in vrne kvadrat prvega parametra. Naslednji parametri se ne upoštevajo.

3) Tretje vedenje

Tretje vedenje se prikaže, ko vključimo razrede in dedovanje v JavaScript. Ko podrejeni razred podeduje metode nadrejenega razreda in definira svoje metode z istim imenom, se metode nadrejenega razreda razveljavijo. To ni tisto, kar bi si želeli v realnih aplikacijah. Želeli bi, da bi bile metode naših nadrejenih razredov dostopne tudi, če jih prevladujejo metode otroškega razreda. Torej, super ključna beseda nam pomaga. S ključno besedo super lahko dostopamo do metod nadrejenega razreda.

Naj to vidimo v akciji.

//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();

Zdaj se vrnite na prvi primer vedenja in poskusite tam uporabiti ključno besedo super. Opazili bi, da ne deluje. To je zato, ker ko smo v prvem primeru ustvarili svojo metodo, nismo razširili matičnega razreda. Metodo smo ustvarili v globalnem obsegu in tako preglasili vse ostale definicije metode.

Zaključek

Ponovno preučimo svoje razumevanje načina prevladovanja v JavaScript. Izvedeli smo, da JavaScript podpira prevladovanje, vendar ne preobremenitev. Če poskušamo preobremeniti metode, JavaScript preglasi vse prejšnje definicije po najnovejši. To velja tudi za osnovne funkcije!

Nato smo videli, kako lahko prevetrimo metode v otroških razredih in nato dostopamo do metod nadrejenega razreda, kadar in kadar je to potrebno. To je zelo uporaben koncept, saj nam omogoča, da razširimo funkcionalnost svojih matičnih razredov in s tem izboljšamo ponovno uporabo kode.

Priporočeni članki

To je vodnik za Prevlado v JavaScript. Tukaj smo razpravljali o tem, kako deluje preglasitev v JavaScript in vrste preglasitve v JavaScript. Če želite izvedeti več, si oglejte tudi naslednji članek -

  1. Kaj lahko naredi Javascript?
  2. Kaj je JavaScript?
  3. Kako namestiti JavaScript
  4. Okviri Python - kaj je okvir python?
  5. Uvod v preglasitev v C ++
  6. Uvod v prevladovanje v OOP
  7. Prevladovanje v Javi
  8. Način preobremenitve v C #
  9. Preobremenitev in preglasitev v C #