TL; DR for (car in carList) {...}
哪个carList
是数组有什么问题?
我的课程Car
的方法为reset()
。在实例化时,Car
对象将自己添加到汽车列表中。我想在for循环中使用方法reset()
。这是我的(减少的)代码:
$(document).ready(function() {
var carList = [];
function Car(speed) {
carList.push($(this));
console.log(carList);
...
this.reset = function() {
// Does some resetting stuff
};
}
car1 = new Car(0.4);
car2 = new Car(0.1);
for (car in carList) {
car.reset();
}
});
这会产生Uncaught TypeError
。控制台日志是
> [m.fn.init[1]]
> [m.fn.init[1], m.fn.init[1]]
> Uncaught TypeError: car.reset is not a function
但是如果我在控制台中输入car1.reset()
,它就可以了。这是为什么?
答案 0 :(得分:2)
function Car(speed) {
carList.push($(this));
你是jQuery-ifying Car对象由于某种原因,但它不是一个DOM元素所以它没有任何意义。
将其更改为:
function Car(speed) {
carList.push(this);
答案 1 :(得分:2)
你的循环做错了。它应该是:
for (var i in carList) {
carList[i].reset();
}
或者,如果您使用的是ES6:
for (var car of carList) {
car.reset();
}
请参阅for...in
loop和for...of
loops的文档。
此外,当您推送Car
的实例时,您应该使用this
而不是$(this)
,正如@JamesMcLaughlin指出的那样。