我有一个对象,我把它放在一个数组中,然后我用for
对于数组中的每个对象,我设置了一个设置的间隔,用于使用参数调用对象的方法,但我不能。
这是我的“班级”。
function ClassTest() {
this.test = function(word) {
console.log(word);
}
}
我创建对象并将其放入数组中:
var array = [];
var objectTest = new ClassTest();
array.push(objectTest);
当我设置间隔时:
for(var i = 0; i < array.length; i++) {
array[i].loop = setInterval(function() {
array[i].test("hello")
}, 1000);
}
问题是 vari
在 setInterval 函数不存在时,我可以创建一个 varindex
它存在但我不明白为什么index
存在和 vari
not.:
for(var i = 0; i < array.length; i++) {
var index = i;
array[i].loop = setInterval(function() {
array[index].test("hello")
}, 1000);
}
当我不使用时出现此错误index
var:
Uncaught TypeError: Cannot read property 'test' of undefined
因为你的for
循环立即执行。到时候你的setInterval()
第一次执行时,你的for
循环早就结束了,你的i
将超出您的数组范围。
Example
在这个例子中,我们的array
has a length
3. 当我们的for
循环结束,我们的i
变量将等于3
。号码3
如果我们登录,将在 JavaScript 控制台中显示三次i
内setTimeout
:
var array = [1, 2, 3];
for (var i = 0; i < array.length; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)