JS: Прототипы
Теория: Цепочки прототипов
Прототипы становятся действительно мощными, когда из них строят цепочки. В этом уроке разбираем, как эти цепочки устроены и как их строить правильно.

Прототип моего прототипа
Для объекта, созданного через new F(), цепочка выглядит так:
- объект ->
F.prototype F.prototype->Object.prototypeObject.prototype->null
Проверка:
Частая ошибка при "наследовании"
Наивный вариант:
Проблема: это один и тот же объект. Изменения в B.prototype сразу затрагивают A.prototype.
Итог: нормальной цепочки не получается.
Правильный способ линковки
Нужен новый объект, который ссылается на A.prototype как на прототип:
Теперь:
B.prototypeотдельный объект- его прототип -
A.prototype - изменения в
B.prototypeне ломаютA.prototype
Что делает Object.create
Упрощенно это можно представить так:
То есть создается новый объект, уже связанный с нужным прототипом.
Почему это важно
Через корректную линковку работают:
- прототипное наследование
- проверка
instanceof - общее поведение для группы объектов
new не создает "экземпляр класса" в классическом смысле. Он создает обычный объект и связывает его с prototype функции-конструктора.
Итоги
Если нужно построить иерархию прототипов, используйте Object.create, а не прямое присваивание B.prototype = A.prototype.
Это базовое правило избавляет от большого количества трудноуловимых багов.