我试图在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;