Es difícil adivinar la motivación de tu pregunta, por lo que algunas respuestas posibles podrían o no abordar tu interés real.
Incluso en algunos idiomas que no son prototipos, es posible aproximar este efecto.
En Java, por ejemplo, una clase interna anónima es muy similar a lo que está describiendo: puede crear e instanciar una subclase del original, anulando solo el método o los métodos que desee. La clase resultante será un instanceof
la clase original, pero no será la misma clase .
¿Por qué querrías hacer esto? Con las expresiones lambda de Java 8, creo que muchos de los mejores casos de uso desaparecen. Con versiones anteriores de Java, al menos, esto puede evitar una proliferación de clases triviales y de uso limitado. Es decir, cuando tiene una gran cantidad de casos de uso relacionados, que se diferencian en una pequeña forma funcional, puede crearlos casi sobre la marcha (casi), con la diferencia de comportamiento inyectada en el momento que lo necesite.
Dicho esto, incluso antes de J8, esto a menudo se puede modificar para cambiar la diferencia a un campo o tres, e inyectarlos en el constructor. Con J8, por supuesto, el método en sí mismo puede inyectarse en la clase, aunque puede haber una tentación de hacerlo cuando otra refactorización puede ser más limpia (si no es tan genial).