Ответ
Классовое наследование использует классы как шаблоны для создания объектов. Наследование происходит через цепочку классов (extends). В JS это синтаксический сахар над прототипами.
Прототипное наследование - объекты наследуют напрямую от других объектов через свойство __proto__. Каждый объект имеет скрытую ссылку на прототип.
Пример классового:
class Parent {
greet() { return 'Hi' }
}
class Child extends Parent {}Пример прототипного:
const parent = { greet: () => 'Hi' };
const child = Object.create(parent);Ключевые отличия:
- В классах наследование декларативное, в прототипах - динамическое
- Классы имеют конструктор, статические методы
- Прототипы гибче - можно менять цепочку наследования в runtime