Yo haría un objeto tablero, en el cual guardaría la posición de cada pieza y el estado del juego en general (jugada imposible, enroque, enroque imposible, coronaciones, jaque, jaque mate, saltos de caballo, etc). Luego, un objeto pieza con las propiedades color y tipo (que le darían al objeto tablero la posibilidad de trabajar).
En este caso en particular no ganarías nada haciéndelo con canvas a menos que desees hacer una versión en perspectiva. Si ese fuera el caso, te tocará trabajar con matrices y mucha álgebra lineal.

Un ejemplo, aquí:
http://www.nihilogic.dk/labs/chess/