sugestão de implementação

Olá Edson, veja as sugestões que fiz no branch dev.
Ao menos vi a implementação funcionando com o uso das teclas A, D.
Porém neste caso não há herança implementada conforme você demonstrou que existe no padrão, seria preciso fazer outro objeto e usar os métodos apply ou call do javascript para incluir o proto de um objeto dentro do outro, assim simulando herança.

Lembro de ter feito algo a respeito:
http://objota.com.br/web/simulando-heranca-em-javascript.html