Наследяване е централна концепция в обектно-ориентираното програмиране, която ти позволява да разширяваш съществуващи класи и да използваш техните свойства и методи. JavaScript въведе по-нова и по-надеждна синтаксис за наследяване с въвеждането на ES6, която е много по-лесна за работа в сравнение с първоначалните прототипни методи. В това ръководство ще ти покажа как да приложиш наследяването в JavaScript с помощта на ключовата дума extends и ще ти обясня стъпка по стъпка как да извикаш конструктора на базовия клас с super правилно.
Основни изводи
- Наследяването в JavaScript става чрез ключовата дума extends.
- Конструкторът на базовия клас трябва да бъде извикан с super.
- Инстанционните променливи могат да се референцират чрез ключовата дума this в производния клас.
Ръководство стъпка по стъпка
Създаване на базов клас
За да започнем с наследяването, първо ще създадем базов клас с име Shape. В този клас ще дефинираме конструктора и някои методи.
Тук дефинираш клас Shape, който има конструктор. Можеш в този конструктор да дефинираш променливи и функции, до които могат да получат достъп другите класове.

Изследване на производния клас
След като създадеш базовия клас, можеш сега да създадеш производен клас, който наследява от Shape. В този пример наричаме новия клас ConcreteShape.
В този производен клас използваме ключовата дума extends, за да укажем, че ConcreteShape наследява от Shape. Конструкторът на производния клас извиква конструктора на базовия клас Shape с super(), което е необходимо, за да се реализира наследяването правилно.
Инстанциране на производния клас
Сега, когато сме създали производния клас, е време да създадем инстанция на този клас.
Тук създаваш нов обект myShape от класа ConcreteShape и предаваш описание на конструктора. След това извикваш метода print, който извежда описанието.
Добавяне на допълнителни свойства
Можеш да добавиш допълнителни свойства или дори методи, които са специфични за този производен клас.
Тук си разширил класа ConcreteShape, като си добавил допълнителни параметри към конструктора.
Използване на наследяването
С ключовата дума super можеш да извикаш метода describe на базовия клас, за да комбинираш свойствата на базовия клас и производния клас.
Резюме – Наследяване в JavaScript: От ES6 до ES13
В това ръководство научи как функционира наследяването в JavaScript, особено с новата синтаксис на класовете. Видя как се дефинират класове, как да наследяваш от базов клас и как да извикаш конструктора правилно. Тези механизми ти улесняват поддържането на чиста и поддържана кодова база, като ефективно използваш повторно функцията.
Често задавани въпроси
Каква е разликата между super() и this?super() се използва, за да извика конструктора на базовия клас, докато this се отнася до инстанцията на текущия клас.
Защо използването на класове от ES6 е по-добро от прототипите?Класовете на ES6 предлагат по-ясен и интуитивен синтаксис, който улеснява четенето и разбирането на кода.
Мога ли да имам няколко базови класа?Не, JavaScript не поддържа множествено наследяване. Един клас може да наследява само от един друг клас.
Какво се случва, ако не извикам super()?Ако не извикаш super(), ще получиш грешка, тъй като конструкторът на базовия клас, който инициализира каквото е необходимо за класа, няма да бъде изпълнен.