Return to Snippet

Revision: 1356
at September 28, 2006 07:51 by pablazo


Initial Code
Últimamente estamos viendo que están apareciendo muchas librerías en Javascript (mooTools, jQuery, Prototype,..) todas ellas se componen de una o varias clases en Javascript conteniendo cientos de líneas de código englobadas en métodos.

Javascript por definición no es un lenguaje orientado a objetos y debido a la potencia de esta programación han tenido que idearselas para conseguir un funcionamiento similar, intuitivo y potente.

Me ha parecido muy curioso que mediante el uso de la versión implicita de un array hayan creado una estructura de “objeto” muy clara, similar a las usadas en lenguajes si orientados a objetos. Vamos a ver como crear una clase y por que llegamos a esa estructura.

Introducción

Javascript es un lenguaje curioso y adictivo, cuando empiezas con él crees que únicamente sirve para hacer 4 efectos y 3 comprobaciones, pero va pasando el tiempo te das cuenta que es mucho más que eso. Es un lenguaje completo y potente.

Tiene sus limitaciones como cualquier lenguaje, y el hecho de ser un lenguaje de cliente no es que sea el más apropiado para según que funcionalidades, pero con un poco de idea e imaginación podemos hacer cualquier cosa bien hecha.

Antecedentes 

Una propiedad muy curiosa de Javascript es la propiedad de igualar variables a funciones, eso nos permite crear una variable que cada vez que la llamemos nos ejecutará una funcionalidad especificada.

var alerta_nombre = function() { alert("NOMBRE"); };
alerta_nombre();

No se me ocurría otro ejemplo más claro, pero podemos ver que hemos convertido una variable en una función.

Otra curiosidad es el uso de los arrays de una forma bastante similar a los objetos.

var nombres = new Array();
	nombres["PEPE"]= "Mi nombre es PEPE";
	nombres["PACO"]= "Mi nombre es PACO";
	nombres["PEDRO"]= "Mi nombre es PEDRO";
	alert(nombres.PEPE);

Conclusión (I)

Entonces, ya visto esto podemos unificar las dos funcionalidades y conseguir algo más o menos elegante para conseguir nuestra clase.

var persona= new Array();
	persona["nombre"]= "Pepe";
	persona["presentar"]= function() {alert("Mi nombre es " + persona["nombre"])};
	persona.presentar();

Conclusion (II) 

¿Y si usamos la forma implicita?

var persona = {
        nombre: "Pepe",
        presentar: function() {
	alert("Mi nombre es " + this.nombre)
	}
};
persona.presentar();

Se parece algo más a una clase ¿no?

Lo que más me llama la atención es que un lenguaje que no está pensado para ser orientado a objetos, se adapte mediente funcionalidades ya implementadas del leguaje a este paradigma de programación. ¿Casualidad?

Leer más en aNieto2k

    * 1 Reference
    * Comments

Initial URL
http://www.anieto2k.com/2006/09/25/programacion-orientada-a-objetos-en-javascript/

Initial Description


Initial Title
Programacion Orientada a Objetos con Javascript

Initial Tags
javascript

Initial Language
JavaScript