Как понять когда нужен 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
225 +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 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир