Показать сообщение отдельно
  #1 (permalink)  
Старый 29.11.2019, 02:53
Интересующийся
Отправить личное сообщение для Xopc11 Посмотреть профиль Найти все сообщения от Xopc11
 
Регистрация: 01.07.2017
Сообщений: 25

ООП. Почему this = undefined?
Доброго времени суток. Столкнулся с такой проблемой... Я даже не знаю как ее описать и посему не могу загуглить. Почему-то this перестает определяться внутри функций в методах класса.

Пример на котором я тренируюсь:
class Interval {
    constructor(x){
        this.End=x;
        this.myInterval=' ';
    }
    startInterval(){
        console.log(this.End);
        this.myInterval=setInterval(function(){
            console.log(this.End);
            if(this.End<10){
                this.End++;
            }
            else{
                this.stopInterval();
            }
        },1000);
    }
    stopInterval(){
          clearInterval(this.myInterval);
    }
}

let interval = new Interval(1);
interval.startInterval();


Когда запускается startInterval() this.End= равен переданной 1, но после начала "setInterval(function()" this.End уже undefined.
7я строка в консоль выводит 1.
9я выводит undefined;
А stopInterval() вообще убивает скрипт "this.stopInterval is not a function". Приходится его комменить.

Я так понимаю это связано с тем, что this переопределяется внутри функции. Как в js получить this.End и stopInterval() внутри setInterval(function(){ ?

Последний раз редактировалось Xopc11, 29.11.2019 в 03:15.
Ответить с цитированием