在多个javascript对象中调用setInterval和clearInterval函数

时间:2014-11-01 12:14:13

标签: javascript oop

我正在尝试在使用“new”运算符创建的js对象中使用“setInterval”和“clearInterval”函数。

HTML:

<button onclick="testList.push(new Test());">run</button>

JS:

Test = function(){
   this.y = 0;
   this.dy = 10;
   that = this;
   this.interval = setInterval(function(){
        that.y += that.dy;
        if (that.y>300){
            console.log(that.y);  //prints y in console
            clearInterval(that.interval);
        }
   }, 10);
}

JFIDDLE

当我点击“运行”按钮后,这就像我期望的那样工作。但是当我没有清除前一个间隔之前多次单击“运行”按钮时(快速多次单击该按钮),则不会清除间隔,并且y会无限增加。我在这里犯的错是什么?

提前谢谢你......

1 个答案:

答案 0 :(得分:2)

您正在创建一个覆盖以前that实例引用的全局变量Test

that = this;

声明变量时应使用var关键字:

var that = this;