Конструктор — это функция которая создаёт какой-то объект.
Вот объекты мы можем создавать литералом, тогда зачем нужен конструктор объектов?
Иногда нужно описать сложную логику формирования этого объекта. Несколько условий, циклов, создание под-объектов со своими конструкторами и тд.
+ Прототипное наследование.
UPD.
Вот вам
пример из реального проекта. Он на TypeScript, но, думаю, разберетесь.
Конструктор принимает некоторый простой объект данных (контекст) что-то валидирует, что-то отбрасывает, что-то сохраняет в неизменном виде и в конце блокирует возможность изменения этого объекта делая его readonly.
Описать всё это в виде литерала не выйдет. Поэтому нужна функция-конструктор.