Объясните что такое конструктор. Никак не могу понять уже несколько месяцев, все возвращаюсь к нему. Еще он путается с прототипом и сколько не читаю все тлен, потому что то он имеет свойство прототип, то прототип имеет конструктор, а в итоге это все поимело мой мозг ! Объясните простыми словами. Вроде начинаю конкретно понимать, а потом все расплывчасто.
В JavaScript конструктор это обычная функция, которая способна создавать объекты по какому-то определенному шаблону. Чтобы вызвать функцию как конструктор перед вызовом пишут ключевое слово new
new Foo()
Это сообщает интерпретатору не просто вызвать функцию, а создать новый пустой объект и установить его в качестве контекста вызываемой функции. После того как функция заканчивает свою работу, объект возвращается в место вызова функции.
У таких функций-конструкторов есть особое свойство .prototype, в нем хранится объект, который задается в качестве прототипа для всех вновь созданных объектов. Почему прототип тоже имеет свойство constructor? А потому что прототип это тоже объект определенного типа, а значит и существует функция-конструктор, с помощью которой можно создавать объекты этого типа. Не стоит забывать, что в js всё есть объекты различных типов и для каждого такого типа есть своя функция-конструктор