⊗jsOpIhCOM 32 of 60 menu

Volanie prepísanej metódy v OOP v JavaScripte

Pri prepisovaní stráca potomok prístup k prepísanej metóde rodiča. Avšak, získať k nej prístup sa napriek tomu dá. Robí sa to pomocou kľúčového slova super, ktoré odkazuje na nadradenú triedu.

Pozrime sa na príklad, kedy nám môže byť potrebný prístup k rodičovskej metóde. Nech máme nasledujúcu triedu-rodiča:

class User { setName(name) { this.name = name; } getName() { return this.name; } }

Nech sme v triede-potomkovi prepísali metódu rodiča:

class Student extends User { setName(name) { if (name.length > 0) { this.name = name; } else { throw new Error('student name error'); } } }

Možno si všimnúť, že v prepísanej metóde pri splnení podmienky fakticky beží kód rodičovskej metódy. Vzniká tak nepotrebné duplikovanie kódu.

Je sa ho možné zbaviť, ak zavoláme metódu rodiča. Urobme to:

class Student extends User { setName(name) { if (name.length > 0) { super.setName(name); // metóda rodiča } else { throw new Error('student name error'); } } }

Daný je nasledujúci kód:

class User { setAge(age) { if (age >= 0) { this.age = age; } else { throw new Error('need age more 0'); } } } class Employee { setAge(age) { if (age <= 120) { if (age >= 0) { this.age = age; } else { throw new Error('need age more 0'); } } else { throw new Error('need age less 120'); } } }

V triede Employee opravte zjednodušte setter veku, použite pôvodnú metódu rodiča.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť