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