Как правильно обратиться к методу таким способом?

Так получилось, что в классе мне нужно обратиться к уже существующему методу. Но я не могу этого сделать через this потому, что нахожусь в функции для обработки событий и this указывает на другое. Поэтому я присвоил метод переменной до обработчика. Проблема в том, что я не понимаю почему теперь нельзя обращаться к свойствам класса через эту переменную, хотя она является ссылкой на метод класса. Ниже прикреплю упрощенный код без обработчика, как пример,и сам проблемный код. А еще, если вы знаете как исправить ситуацию с this в обработчике, то напишите пожалуйста как.
Наглядный пример:
class Test{
    constructor(a){
        this.a = a;
    }
    sqrA(){
        console.log(this.a * this.a)
    }
    testA(){
        let f = this.sqrA;
        console.log(f())
    }
}

obj = new Test(5);
obj.testA();

Ошибка:
console.log(this.a * this.a)
^

TypeError: Cannot read property 'a' of undefined

Основной код:
let curr_month = this.curr_mon;
        let curr_year = this.curr_year;
        let newMonth = this.setNewMonth;
        let baseEl = this.baseEl;
        $('#next').on('click',function (e) {
            curr_month++;
            if(curr_month == 12){
                curr_year++;
                curr_month = 0;
            }
            newMonth(baseEl, curr_month, curr_year);         

        })
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
zendor
@zendor
Потому что вы присваиваете ссылку на функцию в переменную, это просто ссылка, смотреть нужно на точку вызова, а это f(). По этому this будет указывать на global object, в браузере это window. Используйте bind/call/apply и указываете this явно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы