Как понять когда нужен this в ООП, а когда нет? Привет!
Пользуюсь eslint, который выдает мне ошибку class methods use this когда я пишу метод без чего либо что имеет контекст this. И тут у меня вштал вопрос. Зачем мне это нужно если я могу обойтись, в определенном участке кода, без this, используя только const let.
Также я использую опен-сорсовый код для календаря. В котором переменные задаются вот так:findBlocks: function() {
this.popup = $('.datepicker__calendar');
this.prev = $('.calendar__button_type_prev');
this.next = $('.calendar__button_type_next');
this.header = $('.calendar__button_type_current');
this.fieldInput = $('.datepicker__input');
this.content = $('.calendar__content');
this.yearsWrap = $('.calendar__years');
this.datesWrap = $('.calendar__dates');
this.monthsWrap = $('.calendar__months');
this.today = $('.calendar__today');
return this;
},
правда тип использовал старый стандарт, но это не имеет значения, я запросто могу задать переменные var в рамках этого метода
Но теперь объясните мне когда нужно использовать this контекст?
Как объявлять переменные в методах:
Вот так?const users = document.querySelectorAll('.event-users__filter-users');
Или так?this.users = document.querySelectorAll('.event-users__filter-users');

21 Авг 2019 в 07:00
196 +1
0
Ответы
1

Когда нужно использовать this в ООП зависит от того, какой контекст вы хотите использовать в вашем коде.

Если вы хотите использовать переменные или методы объекта внутри его методов, то вам необходимо использовать this. Например, если вы создаете класс с методом, который должен работать с определенными свойствами этого класса, то вам необходимо использовать this.

Если у вас есть набор отдельных переменных или отдельных объектов, которые не связаны с каким-либо объектом, то вы можете использовать простые переменные без использования this.

В вашем случае, когда вы используете опен-сорсовый код для календаря, this используется для связывания переменных с текущим объектом (в данном случае, с объектом класса). Это позволяет вам использовать эти переменные внутри других методов этого класса.

Что касается объявления переменных в методах, то оба подхода допустимы:

const users = document.querySelectorAll('.event-users__filter-users');this.users = document.querySelectorAll('.event-users__filter-users');

Если вы хотите использовать переменную только в пределах этого метода и не хотите сохранять ее как часть объекта класса, то можете использовать первый подход. Если же вы хотите сохранить эту переменную как часть объекта и использовать ее в других методах этого класса, то используйте второй подход.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 622 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир