Какое знаешь наследование кроме классового?
Классы
Кроме классического (классового) наследования есть: прототипное (JS — от объектов), наследование через миксины, композицию, а также множественное (в других языках). В JS основа — прототипное.
Виды наследования
Прототипное (основа JS)
Объекты наследуют от других объектов через цепочку прототипов ([[Prototype]]):
const animal = { eat() {} };
const dog = Object.create(animal); // dog наследует от animalclass в JS — сахар над прототипным.
Классовое
Классы наследуют от классов (extends) — привычно из Java/C++; в JS это надстройка над прототипами.
Миксины (mixins)
Копирование методов из объектов-миксинов в класс/объект — способ «множественного наследования»:
Object.assign(MyClass.prototype, mixin1, mixin2);Композиция (альтернатива наследованию)
Объект собирается из независимых частей вместо иерархии — часто предпочтительнее:
const withLogging = (obj) => ({ ...obj, log() {} });> «Предпочитай композицию наследованию»
Множественное наследование
Наследование от нескольких классов (C++, Python) — в JS нет напрямую, эмулируется миксинами.
Функциональное наследование
Через фабричные функции и замыкания.
Коротко для собеседования
Кроме классового наследования: прототипное (основа JS — объекты наследуют от объектов через [[Prototype]], Object.create; class — сахар над ним), миксины (копирование методов, эмуляция множественного наследования через Object.assign), композиция (сборка из частей — часто предпочтительнее наследования), множественное (в C++/Python, в JS через миксины), функциональное (фабрики + замыкания).