Про прототипы подробно рассказывается на странице Механизмы работы ООП в JavaScript.
Начнем с реализации собственных классов. HttpRouter, QueryParams, BrowserHistory и VersionManager решают прикладные задачи, связанные с вебом.
Разбираемся, как добавлять сеттеры и геттеры. Используем Object.defineProperty для «заморозки» объекта.
Расширяем стандартные классы Array, Object и Function.
Разбираем отличия prototype и __proto__. Знакомимся с реальными примерами использования Object.create.
Рассматриваем все особые варианты, чему может быть равен this в зависимости от способа вызова функции: new, call/apply, bind, стрелочная функция.
Переписываем наследование классов через прототипы, разбираясь с цепочкой прототипов.