@rocknsalt

Что такое конструктор и для чего он нужен (eli5)?

Можете пожалуйста объяснить для чего нужны конструкторы? Я пару месяцев назад начал изучать фронт энд и наткнулся на эту тему, которую не могу однозначно понять. Я прочитал кучу материалов об этом и в рунете и на англоязычных ресурсах, и у меня есть несколько вопросов, на которые я не могу дать ответы. Прошу прощения если кого то заденет этот вопрос, и буду признателен, если кто то объяснит на пальцах следующие вещи:
1. Для чего нужны конструкторы? Можно пару простых примеров, где их конструкторы нельзя будет заменить обычными функциями?

Например в этом примере:
function Cat(name) {
    this.name = name;
    this.talk = function() {
        alert( this.name + " say meeow!" )
    }
}

Вместо
var cat1 = new Cat("Tom")
cat1.talk();

я могу использовать (почти тоже самое)
var cat1 = {name: "Tom"}
alert (cat1 + " say meeow!" );

Какой тогда прок мне использовать конструктор?
  • Вопрос задан
  • 242 просмотра
Решения вопроса 1
Привет!
В первую очередь вы должны понимать что в JS нету как таковых конструкторов, это те же самые функции.
Поэтому для углубленного понимания ООП я думаю можно взять другой язык (php, c#), там и примеры по ярче.

По делу:
В вашем примере вы создаете функция-конструктор которая принимает параметром некое имя.

this.name = name;

Эту строчку можно прочитать дословно так:
Входящий параметр name записать в свойство name объекта где находится конструктор.

В вашем примитивном примере вы не почувствуете удобство от использование конструкторов, поэтому в этом случаи разницы нет.

Советую погуглить ООП не в JS, а вообще. Это должно вам помочь в понимании.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Denormalization
@Denormalization
Конструкторы нужны для инициализации объекта.
Такое читали? https://learn.javascript.ru/constructor-new
Ответ написан
Комментировать
@Alastor
а теперь наследуй свой вариант без боли и страданий
Ответ написан
Комментировать
@rocknsalt Автор вопроса
спасибо всем. Я много материала прочитал, и принцип в целом, кажется, понял. Только не могу придумать пример, где бы я это использовал. Наверное мне нужно столкнуться с задачей, где придётся использовать конструктор так или иначе, и тогда быль станет явью.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы