Сегодня мы рассмотрим Наследование в JavaScript , но для начала вот список статей на тему «Объекты в JavaScript», которые могу быть полезны:
- Объекты основанные на прототипах
- Конструкторы JavaScript
- Прототипы JavaScript
- Свойства класса JavaScript
Наследование через цепочку прототипов
Наследование в JavaScript проводится через прототипы; конкретные экземпляры объекта «наследуют» программный код и данные, имеющиеся в прототипе конструктора (ссылка выше). Но можно получить новый тип объекта из типа, который уже существует. Экземпляры нового типа наследуют все свойства их собственного типа вдобавок к свойствам, воплощенным в их «родителе».
Например, с помощью «связывания» прототипов можно определить новый тип объекта, который наследует все возможности нашего объекта Robot:
1 2 3 4 5 6 7 |
function UltraRobot(extraFeature) { if (extraFeature) this.feature = extraFeature; } UltraRobot.prototype = new Robot(); UltraRobot.prototype.feature = "Радар"; |
Единственным новым для нас действием в этом примере является назначение прототипу UltraRobot нового экземпляра объекта Robot. Поскольку поиск свойств выполняется через прототипы, объекты UltraRobot будут обладать как свойствами UltraRobot, так и свойствами Robot:
1 2 3 4 |
var guard = new UltraRobot("Выполняет вычисления"); var feature = guard.feature; var canFly = guard.hasJetpack; guard.doAction(); |
Способ проверки доступности свойств интерпретатором в этом примере аналогичен тому, который обсуждался выше. Сначала проверяются свойства экземпляра объекта, затем, если совпадения не обнаружено, проверяется прототип (UltraRobot). Если совпадений не обнаружено и в прототипе, проверяется прототип «родителя» (Robot), и далее процесс повторяется рекурсивно вплоть до Object.