DEV Community

Fernando Barrios - jfergt
Fernando Barrios - jfergt

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

3 2

¿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

Sentry blog image

How to reduce TTFB

In the past few years in the web dev world, we’ve seen a significant push towards rendering our websites on the server. Doing so is better for SEO and performs better on low-powered devices, but one thing we had to sacrifice is TTFB.

In this article, we’ll see how we can identify what makes our TTFB high so we can fix it.

Read more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay