Comparativa de Objetos Literales y Clases en JavaScript

Clase 7 de 20Curso Básico de Programación Orientada a Objetos con JavaScript

Resumen

¿Cómo crear objetos literales en JavaScript y qué ventajas ofrecen?

Cuando comienzas a programar en JavaScript, una de las primeras estructuras de datos que aprendes a manejar son los objetos literales. Un objeto literal es una simple lista de pares clave-valor que crea un objeto con ciertas propiedades directamente, sin la necesidad de una clase.

  • Simplicidad: Proporcionan una forma rápida y fácil de encapsular datos y comportamientos relacionados, lo cual es ideal para objetos que no requieren mucha funcionalidad.
  • Accesibilidad: Con un objeto literal, todo está en un solo lugar, lo que hace más sencillo acceder y modificar propiedades directamente.
  • Estructura de datos versátil: Los objetos literales pueden contener strings, números, arrays o incluso otros objetos.

Ejemplos de creación de objetos literales

Consideremos este ejemplo básico para crear un estudiante en Platzi:

const juan1 = {
  nombre: "JuanDC",
  username: "juandc",
  platziRank: 100,
  socialMedia: {
    twitter: "fjuandc",
    instagram: "fjuandc",
    facebook: undefined
  },
  approvedCourses: ["Curso Definitivo de HTML y CSS", "Curso Práctico de HTML y CSS"],
  learningPaths: [
    {
      nombre: "Escuela de Desarrollo Web",
      courses: [
        "Curso Definitivo de HTML y CSS",
        "Curso Práctico de HTML y CSS",
        "Curso de Responsive Design"
      ]
    },
    {
      nombre: "Escuela de Videojuegos",
      courses: ["Introducción a la Producción de Videojuegos", "Curso de Unreal Engine", "Curso de Unity 3D"]
    }
  ]
};

¿Cuáles son las limitaciones de los objetos literales?

Si bien los objetos literales son efectivos para estructuras simples de datos, presentan ciertas limitaciones cuando el proyecto crece o se vuelve más complejo:

  • Redundancia de código: Cuando se requiere crear múltiples objetos similares, es necesario repetir mucho código.
  • No escalabilidad: A medida que crece el número de estudiantes, gestionar cambios se vuelve complicado y propenso a errores. Por ejemplo, si se agrega un nuevo curso a una ruta de aprendizaje, debes cambiar cada objeto manualmente.
  • Falta de encapsulamiento y reutilización: Los objetos no permiten el uso de herencia, encapsulamiento o reutilización de comportamiento, lo que significa que no pueden aprovechar completamente los principios de la Programación Orientada a Objetos (POO).

¿Cómo se usan las clases para crear instancias en JavaScript?

Para solucionar las limitaciones de los objetos literales, JavaScript ofrece las clases, una característica más reciente que permite la reutilización y escalabilidad de código mediante la creación de múltiples instancias a partir de una plantilla de clase.

Ejemplo de clase Student

Crear clases te permite definir una estructura de datos y comportamiento funcional para objetos similares. Aquí tienes un ejemplo de cómo crear una clase Student:

class Student {
  constructor({ name, email, username, twitter = undefined, instagram = undefined, facebook = undefined, approvedCourses = [], learningPaths = [] }) {
    this.name = name;
    this.email = email;
    this.username = username;
    this.socialMedia = {
      twitter,
      instagram,
      facebook,
    };
    this.approvedCourses = approvedCourses;
    this.learningPaths = learningPaths;
  }
}

const juan2 = new Student({
  name: "JuanDC",
  username: "juandc",
  email: "juanito@juanito.com",
  twitter: "fjuandc",
});

const miguelito2 = new Student({
  name: "Miguelito",
  username: "miguelito_feliz",
  email: "miguelito@juanito.com",
  instagram: "miguelito_feliz"
});

Ventajas de usar clases en JavaScript

  • Reutilización del código: Solo es necesario definir una estructura de clase una vez, y luego instanciarla las veces que sea necesario.
  • Facilidad de expansión: Permite agregar y modificar propiedades o métodos, aplicando el concepto de herencia.
  • Código limpio y mantenible: Al simplificar la creación de objetos, se mejora la legibilidad y mantenibilidad del código.

¿Por qué usar programación orientada a objetos?

La programación orientada a objetos (OOP) es más que solo escribir menos líneas de código; permite estructurar tus datos de una manera que es más cercana a cómo piensas sobre modelos del mundo real.

  • Abstracción: Oculta los detalles complejos y expone solo lo necesario.
  • Encapsulamiento: Protege los datos del acceso desde el exterior de la clase mediante la definición de métodos públicos y privados.
  • Herencia: Permite la creación de nuevas clases basadas en clases existentes.
  • Polimorfismo: Habilidades para usar métodos multiusos en diferentes contexts.

Animo a que sigas explorando más sobre este poderoso paradigma de programación, adoptando mejores prácticas que comparten las industrias de tecnología actuales y haciéndote un programador más eficiente y efectivo.