ООП. Почему 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(){ ? |
|
Спасибо за ссылки, но понятнее не стало если честно.
Я придумал другой способ. Привязывать контекст к переменной и уже через нее обращаться к свойству. this.End и this.stopInterval() я заменил на self.End и self.stopInterval(), а сам self объявил в начале метода простым let self = this; . Не знаю правильно ли так делать, но вроде работает ) |
Xopc11,
строка 16 }.bind(this),1000); |
Цитата:
Спасибо. Как закрыть тему? |
Xopc11,
здесь не закрывают темы, это позволяет предложить другие возможные решения или уточнить детали, достаточно сообщения что вам помог тот или иной ответ в теме. |
Часовой пояс GMT +3, время: 04:01. |