mak_ufo
@mak_ufo

Как правильно разобраться с this в классах?

Есть вот такой класс:
class ParserRSS {
    constructor(FeedParser, request) {
        this.feedParser = new FeedParser();
    }

    request(url) {
        const req = this.request(url);
        req.on('response', function(res) {
            this.pipe(this.feedParser);
        });
    }
}


Вопрос в строчке: this.pipe(this.feedParser);. Там первое this от коллбэка должно быть, а второе должно быть свойством класса (которое при вызове конструктора задаётся). Как мне дать понять коду, где какой this?
  • Вопрос задан
  • 174 просмотра
Решения вопроса 2
AMar4enko
@AMar4enko
Оба this в этом случае это контекст коллбэка .on
Ответ написан
vitali1995
@vitali1995
Function создаёт новый this и ссылается сама на себя. Нижеприведённая форма записи захватывает this из контекста. В вашем случае также придётся использовать замыкание объекта request:

const req = this.request(url);
req.on('response', (res) => {
      req.pipe(this.feedParser);
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
07 мая 2024, в 11:27
1500 руб./в час
07 мая 2024, в 11:18
50000 руб./за проект
07 мая 2024, в 11:02
300 руб./за проект