O JavaScript possui um sistema de objetos sem classe no qual os objetos herdam propriedades diretamente de outros objetos. Isso é realmente poderoso, mas não é familiar para programadores treinados classicamente. Se você tentar aplicar padrões clássicos de design diretamente ao JavaScript, ficará frustrado. Mas se você aprender a trabalhar com a natureza prototípica do JavaScript, seus esforços serão recompensados.
...
É Lisp na roupa de C.
O que isso significa para um desenvolvedor de jogos que trabalha com canvas e HTML5? Eu estive examinando essa questão sobre padrões de design úteis nos jogos, mas a herança prototípica é muito diferente da herança clássica, e certamente existem diferenças na melhor maneira de aplicar alguns desses padrões comuns.
Por exemplo, a herança clássica nos permite criar uma moveableEntity
classe, e estender isso com as classes que se movem em nosso mundo de jogo ( player
, monster
, bullet
, etc.). Claro, você pode ativar o JavaScript para funcionar dessa maneira, mas ao fazê-lo, você está meio que lutando contra sua natureza. Existe uma abordagem melhor para esse tipo de problema quando temos herança prototípica na ponta dos dedos?