设置间隔功能不起作用的方法

时间:2018-05-13 08:38:57

标签: javascript oop object methods constructor

有人可以告诉我为什么setInterval无法使用此代码。我可能会遗漏一些东西而且我不确定它是什么。我正在尝试运行方法args.counts();

错误是:

  

未捕获的TypeError:this.cast不是Caste.log中的函数   (的prototype.js:17)

    function Caste(){
    this.name = 'James';
    this.surname = 'Penn';
    this.age = 38;

    this.one = document.getElementById('one');
    this.two = document.getElementById('two');

    this.cast = function(){
         return  this.age;
    }
    // ------------------------

    this.log = function(){
        console.log(this.cast());
    }
    // ------------------------
    this.display = function(){
        this.one.innerHTML = this.age;
    }

    this.counts = function(){
     (setInterval(this.log, 2000));
    }
}

// ----------------------

let args = new Caste();
args.counts();

1 个答案:

答案 0 :(得分:0)

setIntervalwindow.setInterval的简写,这意味着调用上下文是window,而不是实例化的对象。将函数绑定到实例化对象:

(setInterval(this.log.bind(this), 2000));

或使用箭头功能:

(setInterval(() => this.log(), 2000));