⊗jsOpIhCOM 32 of 60 menu

Volání přepsané metody v OOP v JavaScriptu

Při přepisování metody potomek ztrácí přístup k přepsané metodě rodiče. Nicméně, přístup k ní lze stále získat. To se dělá pomocí klíčového slova super, které odkazuje na rodičovskou třídu.

Podívejme se na příklad, kdy můžeme potřebovat přístup k rodičovské metodě. Předpokládejme, že máme následující rodičovskou třídu:

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

Předpokládejme, že jsme v třídě-potomkovi přepsali metodu rodiče:

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

Lze si všimnout, že v přepsané metodě při splnění podmínky je fakticky proveden kód rodičovské metody. Vzniká tak zbytečné duplikování kódu.

Lze se toho zbavit, pokud zavoláme metodu rodiče. Udělejme to:

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

Následuje 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'); } } }

Ve třídě Employee opravte zjednodušte setter věku, použijte originální metodu rodiče.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout