foundation
Classes и objects
Объясняйте classes как blueprints для object state и behavior, а instances как concrete objects с identity, lifecycle и invariants.
Класс — чертёж состояния (поля) и поведения (методы); объект — конкретный экземпляр с идентичностью, жизненным циклом и инвариантами при создании. В JS/TS классы — синтаксический сахар над прототипами: `new User('Ada')` создаёт экземпляр со своими полями и общими методами в цепочке прототипов.
Различайте тип (class/interface) и экземпляр (объект в памяти). Идентичность важна, когда сущности отслеживают по ID, а не только по полям.
На интервью: инварианты конструктора, почему два объекта с равными полями — не одна сущность, и связь с прототипами в JavaScript.
Типовые ошибки: класс как namespace статических функций; mutable singleton вместо объекта; путаница ссылки на класс и экземпляра.
Компромисс — ясность модели против boilerplate: классы, когда lifecycle и identity на первом плане.
Чеклист:
- Класс vs экземпляр vs значение.
- Инварианты в конструкторе.
- Связь синтаксиса class с прототипами.