简体   繁体   中英

"Expected 'this' to be used by class method" I still don't understand

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

  • should make it a static method, to be called as Player.obstacle(x, y) (and probably be renamed to checkGlobalMapForObstacle )
  • should move the method to the 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM