0
 var user = {
    name: 'Иван',
    age: 16,

    runUpAge: function () {

        setInterval(function () { 

            this.age = ++this.age;

            console.log(this.age);

        }, 1000);

    }

}
user.runUpAge();
Anon
  • 3

1 Answers1

0

Дайте угадаю, вы хотите что бы функция runUpAge меняла поле age у объекта, а она не меняет, к тому же вообще ошибки выкидывать может.

Почему же так? Потому что вы используете setInterval и анонимную функцию, которая не сохраняет ссылку на this. Решения два

1) Старое

 var user = {
    name: 'Иван',
    age: 16,

    runUpAge: function () {
        var self = this; // руками сохраняем ссылку

        setInterval(function () { 
            self.age = ++self.age;

            console.log(self.age);
        }, 1000);
    }
}
user.runUpAge();

2) Модное, новое В спецификации es6 ввели стрелочные функции, которые сохраняют ссылку на тот this, в контексте которого они были созданы

 var user = {
    name: 'Иван',
    age: 16,

    runUpAge: function () {
        setInterval(() => { 
            this.age = ++this.age;

            console.log(this.age);
        }, 1000);
    }
}
user.runUpAge();
ThisMan
  • 12,261