joekreek
@joekreek
junior web developer

Почему плохо добавлять методы в конструктор?

У меня есть конструктор какого то объекта. Обязательно ли метод закидывать в его прототип? Можно просто как обычно засунуть в конструктор? Или это плохой тон? Или какие проблемы у меня могут возникнуть? Почему говорят что методы лучше создавать снаружи конструктора ну то есть в прототипах?
  • Вопрос задан
  • 473 просмотра
Решения вопроса 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Потому, что конструктор будет дублировать одинаковые методы при создании каждого экземпляра. А так - каждый экземпляр наследует из прототипа. При большом количестве экземпляров будет существенная разница по ресурсам.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@McBernar
А зачем вам один и тот же метод переписывать n-раз, если можно один раз присвоить его прототипу? В этом же и есть смысл ООП. Один из.
Ответ написан
Вот наглядный пример https://jsfiddle.net/4r9k4vfq/9/
В данном случае у каждого инстанса создается свой обект в памяти с методом methodOne но все инстансы используют общий объект methodTwo
Первый случай используют только тогда, когда нужно использовать переменные, созданные в скоупе конструктора (если попытаетесь во втором методе сослаться на _somePrivateVar получите ошибку) но злоупотреблять этим не стоит, так как второй метод дает преимущество в производительности и потреблении памяти.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы