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

标签 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 无限增加。我在这里犯了什么错误?

提前谢谢您...

最佳答案

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

that = this;

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

var that = this;

关于javascript - 在多个 javascript 对象内调用 setInterval 和clearInterval 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26689205/

相关文章:

JavaScript 从对象获取信息

javascript - 无法调用 beforeDestroy Hook 中定义的回调

javascript - 为什么 Ajax.BeginForm 无法正常工作

c++ - 传递对象还是传递引用/指针?

PHP,哎呀;为可变深度的分类项目选择正确的设计模式并显示项目链接

symfony - symfony2 中的每个类都需要是一个服务吗?

java - Java 组合框 Action 监听器

perl - 基类中的 Moose 方法修饰符不会被调用

javascript - 为什么这个 <li> 被多次添加?

javascript - Mongoose 中的多个 module.export