На данный вопрос уже ответили:
Здравствуйте, помогите пожалуйста.Есть код который должен каждый раз увеличить значение 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);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Привет, подробно изучал Steam-user, хочу создавать аккаунты, но node игнорирует ifКод:
На данный вопрос уже ответили: