我试图在javaScript中定义一个启动setInterval的函数。
这是一个非常简单的示例:

var myApp = {};

myApp.test = function(name, start) {
    this.name = name;
    this.value = start;
    selbst = this;
    this.timerId = setInterval(function() {
        console.log('Interval for :' + selbst.name);
        selbst.value++;
        console.log('Name: ' + selbst.name + ', new value: ' + se`enter code here`lbst.value);
        selbst.start++;
    }, 1000);
}


如果我实例化一个对象,则可以完美实现:

$(document).ready(function() {
    new myApp.test('Test1', 0);
});


但是,当我定义两个对象时

$(document).ready(function() {
    new myApp.test('Test1', 0);
    new myApp.test('Test2', 100);
});


只有第二个对象启动了setInterval!这是为什么?我希望两个引用相同类的对象都具有各自的时间间隔。
为什么第二个setInterval会覆盖第一个setInterval?我正在使用类字段,它们应该是独立的!

请帮忙...

最佳答案

从我的角度来看,您已经全局定义了selbst变量,因此在每个test方法调用中,selbst将始终引用最后一个myApp对象实例。在本地定义selbst应该可以完成以下工作:

var selbst = this;

07-24 21:41