+34 687 770 998 hector.ayestaran@gmail.com





Blog


09
FEB
2012

Prototipos y herencias en Javascript

Los prototipos nos permiten implementar nuevos miembros, o reimplementar los existentes, en las APIs de Javascript, tales como String, Number, Array u Object. Esto sin duda simplificará nuestro código y lo hará más elegante.

Pero, ¿qué es realmente el prototipo?

El prototipo es un objeto que tienen todas las clases, el cual nos permite "gestionar" los miembros o propiedades del objeto principal.
La sintaxis es bien sencilla, se inicia la expresión con el nombre de la clase seguido de un punto y la palabra reservada prototype.

Veamos un ejemplo en donde implementaremos dos nuevos métodos en la clase String, esa de la cual creamos implícitamente una instancia cada vez que creamos una variable de tipo string:


Como podemos observar, la palabra reservada this nos devuelve el propio valor de la variable desde la cual invocamos el prototipo. En dicho valor, el primer argumento será sustituído por el segundo a lo largo de toda la cadena.


Otra de las cosas que los prototipos nos permiten hacer es implementar unas herencias.

Supongamos que tenemos dos clases instanciables, Animal y Reptil, y queremos que Reptil herede los miembros públicos de Animal.

Lo implementaríamos de la siguiente manera:


Imaginemos ahora que Animal es una clase estática. ¿Cómo lo haríamos para que Reptil heredase de Animal?


¿Cómo haríamos para invocar o reimplementar métodos de la clase extendida (Animal) en la clase derivada (Reptil), por ejemplo, un método llamado comer?
Lo haríamos utilizando prototype (obligatorio) :


Para mayor comodidad podemos hacer que la herencia se implemente en un método de la API Function, mediante prototipos. Tan sólo tendríamos que invocar dicho método desde el constructor de la clase derivada pasándole el nombre de la clase extendida como argumento.

Veamos un ejemplo completo utilizando dicho prototipo y todo lo visto en este post:


Así termina este post. A partir de ahora todos a trabajar orientando a objetos y herencias como buenos coders.

Volver