miércoles, 17 de octubre de 2012

5 - Los objetos en Javascript



Interesante: Vídeo Tutorial de Javascript, aprende a programar Javascript desde cero.

Javascript no posee todas las características de los lenguajes orientados a objetos como Java o C++, pero si es capaz de manejar objetos e incluso crearlos. De hecho si un programa en este lenguaje es capaz de interactuar con el explorador es gracias a esta capacidad. Javascript posee algunos objetos predefinidos u objetos intrínsecos como son: Array, Boolean, Date, Function, Global, Math, Number, Object, RegExp, y String. Además el programador puede crear objetos nuevos, con sus propios métodos y propiedades, adaptados a las necesidades concretas de su aplicación.

Crear un objeto nuevo es tan simple como definir cuales serán sus propiedades y sus métodos, teniendo en cuenta que cualquier objeto que definamos ya posee heredados los métodos y propiedades del objeto predefinido object. En el ejemplo siguiente creamos un objeto pagina que aclarará la forma de crear objetos propios:

<script type="text/javascript">
function pagina (titulo, color, fondo)
{
this.titulo = titulo;
this.color = color;
this.imgfondo = fondo;
alert("Titulo: " + titulo + "Color: " + color + "Fondo: " + fondo);
}
var miPagina = new pagina("Mi página", "Blue", "cruces.gif");
var nuevapag = new pagina("2ª Página", "White", "blue");
</script>


Objetos en Javascript
Objetos en Javascript



Este objeto se crea con el operador new pasándole como argumentos las propiedades declaradas para este objeto: titulo, color, imgfondo. La palabra clave this se usa para referirnos al propio objeto que estamos definiendo. Aún mas podemos crear propiedades nuevas sólo para la variable miPagina, pero estas propiedades no afectarán al objeto pagina en sí. 

Por ejemplo:

miPagina.descripcion = "Este es un ejemplo";
alert (miPagina.descripcion);


da como resultado la frase Este es un ejemplo, pero si ahora escribiéramos:

alert(nuevaPag.descripcion);

obtendríamos undefined pues descripcion solo es una propiedad de la variable miPagina no del objeto pagina. Para ampliar un objeto usamos la propiedad prototype:

pagina.prototype.descripcion = "Objeto definido por mi";
alert(nuevaPag.descripcion);
alert(miPagina.descripcion);


Ahora hemos añadido una propiedad al objeto pagina y esta propiedad se transmite a las variables de tipo pagina (mas correctamente instancias de pagina), por tanto en ambos casos obtendríamos la frase Objeto definido por mí, que es el valor dado a la nueva propiedad.