DEV Community

Fernando Barrios - jfergt
Fernando Barrios - jfergt

Posted on • Edited on • Originally published at jfbarrios.com

¿Todo en JavaScript es un objeto?

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'
}
Enter fullscreen mode Exit fullscreen mode

Ahora vamos a añadir una nueva propiedad al objeto

obj.propiedad3 = 'Valor 3';
Enter fullscreen mode Exit fullscreen mode

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'
Enter fullscreen mode Exit fullscreen mode
  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: ƒ]
Enter fullscreen mode Exit fullscreen mode

Funciones como Objeto

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

function saludar() {
  console.log("Hola!");
}
Enter fullscreen mode Exit fullscreen mode

Ahora le añadiremos más propiedades

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

Imprimamos unos logs

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

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"); 

Enter fullscreen mode Exit fullscreen mode

Intentando añadir propiedades a ambos objetos

nombrePrimitivo.apellido = "Arias";
nombreNoPrimitivo.apellido = "Barrios";
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Top comments (0)