На данный вопрос уже ответили:
Здравствуйте, помогите пожалуйста.Есть код который должен каждый раз увеличить значение i, но если в setinterval писать функцию без скобок он выводит NaN каждые 1000 миллисекунд , а если со скобками то 0 но один раз. Как исправить так, чтобы выводилась как счетчик?
function Up() {
this.i = 0;
}
Up.prototype.method = function() {
console.log(this.i++);
}
var up= new Up();
setInterval(up.method, 1000);
Я понимаю так - на строке (var up = new Up();) создается экземпляр объекта Up, на следующей строке в этом экземпляре вызывается метод method, так как в этом экземпляре его нет, мы поднимаемся в прототип и там находим метод method и выполняем его, но он почему то результат NaN
Если посмотреть что есть this внутри функции method, то видно, что проблема классическая - https://stackoverflow.com/questions/13224620/the-this-keyword-returns-the-window-object-within-an-objects-prototype-in-jav
Решение там же, тем не менее это работает:
function Up() {
this.i = 0;
this.method = () => { this.i++; console.log(this.i) };
}
var up = new Up();
setInterval(up.method, 1000);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости