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
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект