# Inheritance and the prototype chain

Модель наследования в JavaScript может озадачить опытных разработчиков на высокоуровневых объектно-ориентированных языках (таких, например, как Java или C++), поскольку она динамическая и не включает в себя реализацию понятия`class`(хотя ключевое слово`class,` которое было долгие годы зарезервировано, приобрело практическое значение в стандарте ES2015, однако Class в JavaScript ES>=6 представляет собой лишь "синтаксический сахар" поверх прототипно-ориентированной модели наследования).

В плане наследования JavaScript работает лишь с одной сущностью: объектами. Каждый объект имеет внутреннюю ссылку на другой объект, называемый его **прототипом**. У объекта-прототипа также есть собственный прототип и так далее до тех пор, пока цепочка не завершится объектом, у которого свойство prototype равно`null`. По определению,`null`не имеет прототипа и является завершающим звеном в **цепочке прототипов**.

Хотя прототипную модель наследования некоторые относят к недостаткам JavaScript, на самом деле она *мощнее* классической. К примеру, поверх неё можно предельно просто реализовать классическое наследование, а вот попытки совершить обратное непременно вынудят вас попотеть.
