⊗jsOpIhCOM 32 of 60 menu

Извикване на предефиниран метод в ООП в JavaScript

При предефиниране потомкът губи достъп до предефинирания метод на родителя. Въпреки това, все пак е възможно да се получи достъп до него. Това се прави с помощта на ключовата дума super, която сочи към родителския клас.

Нека разгледаме пример, когато може да се нуждаем от достъп към родителския метод. Да предположим, че имаме следния родителски клас:

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

Да предположим, че в класа-потомък сме предефинирали метода на родителя:

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

Може да се забележи, че в предефинирания метод при изпълнение на условието фактически се изпълнява кодът на родителския метод. Получава се ненужно дублиране на кода.

Може да се отървем от него, ако извикаме метода на родителя. Нека направим това:

class Student extends User { setName(name) { if (name.length > 0) { super.setName(name); // метод на родителя } else { throw new Error('student name error'); } } }

Даден е следният код:

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

В класа Employee коригирайте (опростете) сетъра за възраст, като използвате оригиналния метод на родителя.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне