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





Blog


07
DIC
2012

Herencias de clases estáticas en Javascript

Anteriormente vimos como implementar herencias mediante prototype en clases instanciables (clases dotadas de constructor).
Esta vez veremos como se hace en clases estáticas, para todos aquellos que prefieran no crear instancia cuando sólo se necesite una (recordemos que los miembros de instancia consumen más memoria que los de clase).

El truco consistirá en que una vez implementada la clase extendida que llamaremos Mamifero, y declarada la clase derivada que llamaremos Gato, recorreremos los miembros de la primera y los implementaremos en la segunda mediante las instrucciones for y eval.

Veamos cómo se hace:

Es importante que la herencia ocurra antes de la implementación de la clase derivada, ya que de lo contrario los miembros de esta última que coincidiesen en nombre se verían sustituídos por los de la primera.

Vemos que creamos un campo, parent, el cual utilizaremos para invocar miembros de la clase extendida desde la derivada, sin tener que acordarnos del nombre de la primera, por ejemplo para reimplementar métodos, tal y como estamos haciendo con el método comer.

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

El ejemplo quedaría así:


Y listo. Ya podemos trabajar con herencias y clases estáticas a gusto y con fundamento.

Volver