sábado, 12 de enero de 2013

Revitalizando la creación de instancias en JavaScript

Lo que hoy os traigo es un modelo de código a seguir para revitalizar la creación de instancias en JavaScript. Entre sus características más destacadas tenemos:
  • No es necesario el uso del operador new para la creación de una instancia.
  • Prescindiendo del operador new para la creación de la instancia, podemos pasar una lista de argumentos en forma de matriz al constructor.
  • Es posible interactuar con la instancia antes de que se llame al constructor original.
Todo ello se traduce en una ligera comodidad a la hora de escribir, reducción de código y más flexibilidad antes y durante la creación de la instancia.

Os preguntareis qué tiene de especial el poder interactuar con la instancia antes de que se llame al constructor original. Muy sencillo, esta funcionalidad nos permitirá, entre otras cosas, crear otra instancia durante la creación de una instancia, y todo ello dentro del mismo constructor. A groso modo, sin las medidas adecuadas, realizar lo anterior nos llevaría a un bucle infinito.

La solución sucia a lo anterior sería pasarle al constructor un argumento especial que sirva de marcador para que no siga creando otra instancia cada vez que se llame al constructor. Digo sucia, porque no podemos garantizar que se introduzca, por accidente, tal argumento especial en el constructor, ofreciéndonos resultados no esperados.

Lo correcto, a resumidas cuentas, es preparar una nueva clase y asignarle el prototipo original, de este modo podemos crear instancias sin que éstas hayan tenido que pasar por su constructor original. Llegados a este punto podemos interactuar con la instancia y crear un marcador, y a continuación llamar al constructor original de la instancia.

Por último adjunto el código fuente sobre lo comentado anteriormente (Animal.instance).

No hay comentarios:

Publicar un comentario