/ Published in: JavaScript
URL: http://www.anieto2k.com/2006/09/25/programacion-orientada-a-objetos-en-javascript/
Expand |
Embed | Plain Text
Ú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
You need to login to post a comment.
