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 с прототипами.