I have an error from ESlint, but I don´t understand why. I have read these:
and this:
I still don't understanding what am I doing wrong.
My class
/* eslint-disable no-plusplus */ /* eslint-disable no-undef */ class Player { constructor(imagePlayer, name, score, positionY, positionX) { this.imagePlayer = imagePlayer; this.name = name; this.score = score; this.x = positionX; this.y = positionY; } drawPlayer() { app.map.mapGame[this.y][this.x] = this.imagePlayer; } obstacle(y, x) { let colision = false; if (app.map.mapGame[y][x] === 1) { console.log("evaluación"); colision = true; } return colision; } lastPosition(oldPosition, direction) { if (direction === left || direction === right) { app.map.mapGame[this.y][this.x - oldPosition] = 0; } else { app.map.mapGame[this.y - oldPosition][this.x] = 0; } } // movements players movement(direction) { switch (direction) { case up: if (this.y > 0) { if (this.obstacle(this.y - 1, this.x) === false) { this.y--; this.lastPosition(-1, direction); } } break; case down: if (this.y < 9) { if (this.obstacle(this.y + 1, this.x) === false) { this.y++; this.lastPosition(+1, direction); } } break; case left: if (this.x > 0) { this.x--; this.lastPosition(-1, direction); } break; case right: if (this.x < 14) { this.x++; this.lastPosition(+1, direction); } break; default: console.log("muro"); break; } } // movement }
Error:
Expected 'this' to be used by class method 'obstacle
The obstacle method isn't settled on the full cases just on two of them.
The linter is complaining that a method that doesn't use the instance it was called on ( this
) shouldn't be an instance method in the first place. It's a bad practice.
You either
static
method, to be called as Player.obstacle(x, y)
(and probably be renamed to checkGlobalMapForObstacle
)Map
class where it belongs, as it is checking coordinates against the map contents ( this.mapGame[x][y]
).
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.