Sección 1: JavaScript

Lección 15: Estructuras de datos: Objetos

Los objetos son estructuras de datos muy poderosas. De hecho, en JavaScript, los objetos además de ser estructuras de datos también son un tipo de dato. Los objetos son colecciones de propiedades. ¿Qué significa esto? Veámoslo tratando de escribir un objeto:

Veamos ahora el contenido de nuestro objeto usuario.

¿Un objeto luce un poco diferente a un array, no? Definamos un array para ver la diferencia.

Ahora comparemos el contenido de ambos.

Como podemos ver tenemos varias diferencias. Un objeto posee propiedades y valores. Por ejemplo, la propiedad “nombre” posee el valor “Juan”, y la propiedad edad posee el valor 24. En cambio en un array tenemos que el índice 0 posee el valor “manzana”, y el índice 1 posee el valor “pera”.

¿Cómo podemos acceder a los valores de las propiedades de un objeto? Para ello debemos colocar el nombre del objeto seguido de un punto, y finalmente colocar el nombre de la propiedad. Por ejemplo:

usuario.nombre;

usuario.edad;

usuario.deporte;

usuario.estaCasado;

En los arrays tenemos métodos como “pop” y “push” que nos permiten modificar un array. ¿Cómo podemos añadir propiedades a un objeto? Es muy simple. Por ejemplo si quisiéramos añadir la propiedad comidaFavorita, lo único que tendríamos que hacer es lo siguiente:

usuario.comidaFavorita = “pizza”;

Ahora podemos ver que nuestro objeto usuario posee una propiedad nueva.

Ahora cambiemos la propiedad estaCasado a true (verdadero).

Ahora veamos las propiedades del objeto usuario.

Podemos apreciar que ahora la propiedad estaCasado posee el valor “true”.

¿Por qué un array no es un tipo de datos y un objeto si lo es? Porque teóricamente un array es un objeto, en donde cada atributo es el número de la posición que ocupa el valor correspondiente.

Las estructuras de datos nos ayudan a mantener mejor organizados nuestros datos. Por ejemplo, un array es una buena solución para almacenar un listado de compras de supermercado o cosas para hacer. En cambio un objeto es una solución acorde para almacenar algo como información de un usuario.

Por ejemplo, pensemos en un juego donde controlamos a un brujo. Nuestro brujo tiene una altura, un cantidad de poder, una cantidad de energía, una cantidad de experiencia. Todas esas características de nuestro brujo sería bueno almacenarlas en un objeto. De hecho, nuestro brujo es un objeto, ya que posee propiedad propiedad y valores en cada una de ellas.

Quizás los hechizos de nuestro mago podrían estar almacenados en un array de strings. ¿Eso significa que podemos tener un array dentro de un objeto? Si, por ejemplo si el objeto usuario que ya definimos fuera un mago, puedo definir dentro de él una propiedad llamada hechizo como un array.

De esta manera vemos cómo podemos tener un array dentro de un objeto. ¿Y podemos tener un objeto dentro de un array? Si, si podemos. Por ejemplo, creemos un array de usuarios de nuestro sitio web.

Ahora veamos el contenido de nuestro array de usuarios.

Como podemos ver a dentro de nuestro array tenemos los dos objetos de los usuarios de nuestro sitio web.

¿Cómo podemos acceder a las propiedades de un objeto? Por ejemplo si quisiéramos acceder a la propiedad hechizos de nuestro objeto usuario, tendríamos que ejecutar la siguiente sentencia: usuario.hechizos;

Ahora queremos acceder al segundo hechizo. Para ello ejecutaremos la siguiente sentencia: usuario.hechizos[1];

¿Cómo podemos acceder al atributo contrasena del primer objeto del array usuarios? Para ello ejecutaremos la siguiente sentencia: usuarios[0].contrasena;

¿Qué pasaría si nuestro usuario Juan también pudiera saludar? ¿Podríamos añadir una función a nuestro objeto? Si, claro que podemos. Para ello, vamos a definir dentro de nuestro objeto una función llamada saludar.

Ahora veamos nuevamente el contenido del objeto usuario.

Vemos que dentro de nuestro objeto usuario tenemos la función saludar.

Ahora llamemos a la función ingresando: usuario.saludar()

Vemos cómo la función se ejecuta correctamente.

Como podemos ver la función saludar() es parte del objeto usuario. A todas las funciones que son parte de un objeto se las conoce como métodos. Por lo tanto, podemos decir que saludar() es un método de usuario.

Al igual que en el caso de los arrays, los cuales poseen métodos como push() y pop(), e incluso el caso de console.log() donde podemos decir que log() es un método del objeto console.

Como podemos ver console posee varios métodos.

Ahora, ¿podemos crear objetos vacíos? Si, claro que podemos.

¿Puedo crear un array vacío? Si, también podemos.

¿Qué sucede si intentamos acceder al primer elemento de nuestro array vacío?

Como vemos, obtenemos “undefined”, ya que no se encuentra definido elemento alguno dentro del array.

Ahora definamos un objeto llamado objetoVacio:

Ahora definamos un objeto llamado objetoNulo y le asignemos el valor “null”.

Si vemos el contenido de objetoVacio vemos que no contiene elementos, simplemente se encuentra vacío.

En cambio si vemos el contenido de nuestro objetoNulo vemos que es null (nulo).

Null es el sexto tipo de dato, el cual nos indica simplemente que un objeto es nulo. Más adelante en este curso abordaremos sobre el uso de null, así que por ahora entenderemos que cuando un objeto es null (nulo) significa que no hay nada dentro de él.

Veamos qué sucede si intentamos asignar un valor a nueva propiedad de un objetoVacio:

Como podemos ver, no hubo problemas. Ahora intentemos hacer lo mismo en un objeto nulo:

Como vemos obtenemos un error. Quizás por ahora los objetos nulos nos parezcan inútiles, pero esto no es así. Más adelante en el curso veremos casos en los que nos resultarán de gran importancia.

Bueno, eso fue todo por esta lección.

Nos vemos en la siguiente.

¡Adios!

C2-S1-L15. Estructuras de datos - Objetos

By Carlos Alberto Acosta Parra

C2-S1-L15. Estructuras de datos - Objetos

  • 198