我要重写以下代码:
for(i = 0; i < grounds.length; i++) {
grounds[i].show();
}
使用forEach方法的方式:
grounds.forEach(**what should i post here?**);
完整代码:
class Ground {
constructor(x, y, sizeX, sizeY) {
this.x = x;
this.y = y;
this.sizeX = sizeX;
this.sizeY = sizeY;
}
show() {
ctx.fillStyle = "rgb(138, 75, 13)";
ctx.fillRect(this.x, this.y, this.sizeX, this.sizeY);
}
}
}
let ground;
let grounds = [];
function generateGround() {
for(i = 0; i < 10; i++) {
ground = new Ground(0 + i * 40, canvas.height - 30, 40, 30);
grounds.push(ground);
}
}
generateGround();
function draw() {
for(i = 0; i < grounds.length; i++) {
grounds[i].show();
}
requestAnimationFrame(draw);
}
requestAnimationFrame(draw);
我读了几个例子,但是我找不到对每个地面元素执行show()方法的方法。
答案 0 :(得分:4)
添加一个带有参数item
(或您要调用的参数)的匿名函数,然后调用item.show()
:
grounds.forEach(item => item.show())
较旧的浏览器可能不支持箭头功能-在这种情况下,请执行以下操作:
grounds.forEach(function(item) {
item.show();
})