Durante uma revisão de código hoje, um colega meu disse algo interessante:
prototypesó é útil quando você precisa de herança - e quando a herança é uma boa ideia ?
Pensei sobre isso e percebi que geralmente uso herança para contornar códigos mal projetados em primeiro lugar. O estilo OO moderno prefere composição a herança, mas não conheço nenhum idioma que tenha levado isso a sério e que realmente a imponha .
Existem linguagens de programação de uso geral com classes, objetos, métodos, interfaces e assim por diante, que não permitem a herança baseada em classe? (Se essa ideia não faz sentido, por que não?)
implementspalavra - chave e interfaces (em oposição à herança de estado e comportamento introduzido com o uso da extendspalavra-chave em classes contendo qualquer implementação).
new, thisE prototypesão todos muito de um campo minado para uso comum IMO.
prototypeé útil para quando você possui métodos e propriedades públicos que devem ser compartilhados entre instâncias. Também é útil porque permite que você use corretamente oinstanceofoperador em JavaScript:if (foo instanceof Foo) { ....