Tipos primitivos vs objetos en JavaScript

¿Cuál es la principal diferencia entre tipos primitivos y objetos en JavaScript?


Primero, definamos qué son los tipos primitivos.

Los tipos primitivos en JavaScript son

  • instrumentos de cuerda
  • números (Number y BigInt)
  • booleanos (verdadero o falso)
  • indefinido
  • Valores de símbolo

nulles un tipo primitivo especial. Si tu correstypeof nullusted obtendrá'object'atrás, pero en realidad es un tipo primitivo.

Todo lo que no es de tipo primitivo es unobjeto.

Las funciones también son objetos. Podemos establecer propiedades y métodos en funciones.typeofvolverá'function'pero el constructor de funciones se deriva del constructor de objetos.

Las grandes diferencias entre los tipos primitivos y los objetos son

  • Los tipos primitivos son inmutables, los objetos solo tienen una referencia inmutable, pero su valor puede cambiar con el tiempo.
  • los tipos primitivos se pasan por valor. Los objetos se pasan por referencia
  • los tipos primitivos se copian por valor. Los objetos se copian por referencia
  • los tipos primitivos se comparan por valor. Los objetos se comparan por referencia

Si copiamos un tipo primitivo de esta manera:

let name = 'Flavio'
let secondName = name

Ahora podemos cambiar elnamevariable asignándole un nuevo valor, perosecondNametodavía conserva el valor anterior, porque fue copiado por valor:

name = 'Roger'
secondName //'Flavio'

Si tenemos un objeto:

let car = {
  color: 'yellow'
}

y lo copiamos a otra variable:

let car = {
  color: 'yellow'
}

let anotherCar = car

en este casoanotherCarapunta al mismo objeto quecar. Si pones

car.color = 'blue'

además

anotherCar.color

estarán'blue'.

Lo mismo funciona para pasar objetos a funciones y para comparar.

Digamos que queremos compararcaraanotherCar:

anotherCar === car //true

Esto es cierto porque ambas variables apuntan exactamente al mismo objeto.

Pero sianotherCarera un objeto con las mismas propiedades quecar, compararlos daría unfalseresultado:

let car = {
  color: 'yellow'
}

let anotherCar = { color: ‘yellow’ }

anotherCar === car //false


Más tutoriales de js: