Fernando Barrios
Fernando Barrios

Fernando Barrios

¿Todo en JavaScript es un objeto?

Fernando Barrios
·Mar 8, 2022·

2 min read

Subscribe to my newsletter and never miss my upcoming articles

Hace unos días, un seguidor de Laserants.com, hizo la pregunta de si una función era un objeto. Mi respuesta fue en torno a explicar cómo casi todo es un objeto en JavaScript. He acá una clasificación de los types en JavaScript:

  • Primitivos (cadena, número, nulo, booleano, indefinido, símbolo): estos son tipos de datos inmutables. No son objetos, no tienen métodos y se almacenan en memoria por valor.
  • No primitivos (funciones, matrices y objetos): estos son tipos de datos mutables. Son objetos y se almacenan en memoria por referencia.

##¿Qué es un objeto? La clase Object representa uno de los tipos de datos de JavaScript. Se utiliza para almacenar varias colecciones con clave y entidades más complejas. Podemos decir que en JavaScript, un objeto es un entidad independiente con propiedades y tipos.

Para crear un objeto podemos hacer algo como esto:

const obj = {
  propiedad1: 'Valor 1',
  propiedad2: 'Valor2'
}

Ahora vamos a añadir una nueva propiedad al objeto

obj.propiedad3 = 'Valor 3';

Arrays como objetos

Un array es un objeto en JavaScript, y lo podemos demostrar de dos formas:

  1. Usando typeof:
var a = [1,2,3];
console.log(typeof a);  // Salida: 'object'
  1. Añadiendo más propiedades o claves
const arr = [1,2,3];
arr.saludar = () => console.log("hola");  // Añadiendo la propiedad saludar al objeto arr.

console.log(arr.length); // Salida: 3
console.log(arr.saludar); // Salida: hola
console.log(arr); // Salida: (3) [1, 2, 3, saludar: ƒ]

Funciones como Objeto

Ahora veamos el caso de un Array con este ejemplo, primero crearemos una función

function saludar() {
  console.log("Hola!");
}

Ahora le añadiremos más propiedades

saludar.nombre = "Fernando"; 
saludar.conNombre = function() {
    console.log(`Hola, ${this.nombre}!`)
}

Imprimamos unos logs

saludar() // Salida: Hola!
console.log(saludar.nombre); // Salida: Fernando
saludar.conNombre() // Salida: Hola, Fernando!

String

Existen tipos de datos no-primitivos, que son objetos, y que tienen su alternativa primitiva, entre estos tenemos el String (nótese la mayúscula en la S). Veamos un ejemplo de como un String puede ser un objeto

const nombrePrimitivo = "Carlos";
const nombreNoPrimitivo = new String("Fernando");

Intentando añadir propiedades a ambos objetos

nombrePrimitivo.apellido = "Arias";
nombreNoPrimitivo.apellido = "Barrios";

Añadiendo logs

console.log(nombrePrimitivo); // Salida: Carlos
console.log(nombrePrimitivo.apellido); // Salida: undefined
console.log(typeof nombrePrimitivo); // Salida: string

console.log(nombreNoPrimitivo); // Salida: String {'Fernando', apellido: 'Barrios**'}
console.log(nombreNoPrimitivo.apellido); // Salida: 'Barrios'
console.log(typeof nombreNoPrimitivo); // Salida: object
 
Share this