有人可以告诉我为什么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();
答案 0 :(得分:0)
setInterval
是window.setInterval
的简写,这意味着调用上下文是window
,而不是实例化的对象。将函数绑定到实例化对象:
(setInterval(this.log.bind(this), 2000));
或使用箭头功能:
(setInterval(() => this.log(), 2000));