prototípico herencia es una forma de la reutilización de código orientado a objetos. Javascript es uno de los únicos lenguajes orientados a objetos [mainstream] para usar la herencia prototípica. Casi todos los otros lenguajes orientados a objetos son clásicos.
En herencia clásica, el programador escribe una clase, que define un objeto. Se pueden crear instancias de varios objetos de la misma clase, por lo que tiene un código en un lugar que describe varios objetos en su programa. Las clases pueden organizarse en una jerarquía, lo que favorece la reutilización del código. El código más general se almacena en una clase de nivel superior, de la cual heredan las clases de nivel inferior. Esto significa que un objeto comparte código con otros objetos de la misma clase, así como con sus clases principales.
En el herencia de prototipos forma, los objetos hereda directamente de otros objetos. Todo el negocio sobre las clases se va. Si quieres un objeto, simplemente escribe un objeto. Pero la reutilización de código sigue siendo una cosa valiosa, por lo que los objetos pueden vincularse entre sí en una jerarquía. En javascript, cada objeto tiene un enlace secreto al objeto que lo creó, formando una cadena. Cuando se le pide a un objeto una propiedad que no tiene, se le preguntará su objeto padre ... continuamente por la cadena hasta que se encuentre la propiedad o hasta que se llegue al objeto raíz.
Cada función en JavaScript (que son los objetos mismos) en realidad tiene un miembro llamado "prototipo", que es responsable de proporcionar los valores cuando se solicita un objeto para ellos. Tener este miembro permite que el mecanismo constructor (mediante el cual los objetos se construyen a partir de funciones) funcione. Agregar una propiedad al prototipo de un objeto de función lo hará disponible para el objeto construido, así como para todos los objetos que hereden de él.
Ventajas
Puede que no haya una regla dura y rápida en cuanto a porqué herencia de prototipos es una forma ventajosa de reutilización de códigos. La reutilización del código en sí es ventajosa, y la herencia prototípica es una forma sensata de resolverlo.Se podría argumentar que la herencia prototípica es bastante simple modelo de reutilización de código, y que el código puede ser muy reutilizado en formas directas. Pero los lenguajes clásicos ciertamente pueden lograr esto también.
Nota al margen:@ Andrew Coberturas hace un buen punto, que en realidad hay many idiomas prototípicos. Vale la pena señalar que estos otros existen, pero también vale la pena señalar que ninguno de ellos es algo cercano a la corriente principal. NewtonScript parecía tener algo de tracción durante un tiempo, pero murió con su plataforma. También es posible extender algunos idiomas modernos de forma que agreguen capacidades prototípicas.
Esta respuesta explica todo lo que necesita saber sobre la herencia de prototypal: http://stackoverflow.com/a/16872315/783743 –