Del curso: JavaScript Avanzado 1

Diferencia entre tipos primitivos y objetos en JavaScript - Tutorial de JavaScript

Del curso: JavaScript Avanzado 1

Diferencia entre tipos primitivos y objetos en JavaScript

En esta lección te quiero contar sobre las diferencias de los datos primitivos y los objetos en JavaScript. Como ya tú podrás saber, en JavaScript tenemos varios tipos de datos, los cuales son los datos booleanos, los numéricos, los de texto o "string", el 'null', el cual nos indica que una variable no tiene valor, el 'undefined', que nos indica que una variable está declarada en memoria pero su valor aún no ha sido definido, y el símbolo, el cual fue recientemente introducido en la definición de Six Sigma 6. A partir de aquí todo lo demás son objetos, como son los arreglos, las fechas o incluso objetos que tú mismo declares. Hay dos diferencias fundamentales entre los objetos y las variables primitivas. Para ver estas diferencias, vamos a ver este ejemplo de código que tenemos aquí. La primera diferencia entre ambos es que tú no puedes declarar propiedades a variables con valor primitivo. Por ejemplo, el valor numérico aquí le estamos intentando agregar una propiedad la cual es un "string" 'abc'. Pero si corremos este código, nos daremos cuenta de que el valor de 'temp' es 'undefined', a diferencia de los objetos en los cuales nosotros podemos agregar un sinfín de variables y de funciones. Por esta razón, cuando hacemos el 'console.log' obtenemos el valor de la propiedad en el objeto sin ningún problema. Otra diferencia fundamental entre ambos es que cuando comparamos objetos, estos se comparan por referencia. ¿Esto qué significa? Cada objeto, a pesar de que puedan lucir similares o iguales, ellos son fundamentalmente diferentes, cada uno tiene su propia identidad, por lo que a la hora de comparar estos dos objetos que tenemos aquí podemos ver que vamos a obtener un valor negativo, ya que ellos no son iguales, a diferencia de los valores primitivos, los cuales ellos no tienen su propia identidad, por lo que a la hora de comparar uno con el otro vamos a obtener un resultado positivo. Ahora te preguntarás, si no podemos agregar propiedades a variables primitivas, ¿por qué es que por ejemplo en algunos casos podemos acceder a algunas propiedades o funciones particulares de cada tipo? Por ejemplo, si tenemos una cadena de texto como la que tenemos aquí, podemos acceder a su tamaño utilizando la propiedad 'length', pero este es un valor primitivo. ¿Cómo es que esto sucede? Bueno, JavaScript en el fondo tiene unos contenedores o envoltorios los cuales envuelven a las propiedades primitivas como son las 'Boolean', el 'Number' y el 'String'. Estos son objetos los cuales contienen las propiedades de las funciones que tú puedes utilizar para manipular estos tipos de datos. ¿Qué es lo que sucede en este caso? Esta variable fundamentalmente es primitiva, pero cuando tú intentas acceder a la propiedad 'length', JavaScript envuelve esta variable en un objeto como este que ves aquí y luego la propiedad se llama. Cuando esta ejecución termina, este envoltorio es descartado y la variable vuelve a ser primitiva fundamentalmente.

Contenido