Javascript 为什么我的方法会打印;秒:南“;
调试时钟类的increment和tick方法时遇到问题。时钟的seconds属性应该每秒递增1,但是seconds会抛出一个NaN错误 增量的目标是每次调用时钟实例时,将其秒数增加1。Tick每秒调用一次increment方法以实现这一点Javascript 为什么我的方法会打印;秒:南“;,javascript,prototype,Javascript,Prototype,调试时钟类的increment和tick方法时遇到问题。时钟的seconds属性应该每秒递增1,但是seconds会抛出一个NaN错误 增量的目标是每次调用时钟实例时,将其秒数增加1。Tick每秒调用一次increment方法以实现这一点 function Clock() { this.seconds = 0; } Clock.prototype.increment = function() { this.seconds = this.seconds + 1; console.lo
function Clock() {
this.seconds = 0;
}
Clock.prototype.increment = function() {
this.seconds = this.seconds + 1;
console.log('Seconds: ' + this.seconds);
};
Clock.prototype.tick = function() {
setInterval(this.increment, 1000);
};
var timex = new Clock();
timex.tick();
这是使用setTimeout调用它时的窗口
setInterval(this.increment.bind(this), 1000);
问题在于,在setInterval
处理程序中,this
不再指向Clock
对象,而是指向全局命名空间。最简单的解决方案就是将此
绑定到此。增量
:
Clock.prototype.tick = function() {
setInterval(this.increment.bind(this), 1000);
};
另请参见:请不要回答重复的问题。投票决定作为一个副本关闭。@MikeMcCaughan投票决定关闭,但是OP更容易找到一个解决方案……他们可以从副本中得到这个解决方案。或者,就此而言,一个简单的评论。通过回答问题,可以减少删除问题的可能性。