JavaScript · Sección 6

Prototipos, clases y composición

Delegación prototípica, clases, encapsulación, herencia y composición para modelar comportamiento sin crear jerarquías rígidas.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Repasa objetos, arrays y funciones. Las clases se explican sobre el modelo de prototipos de JavaScript.

02 / META OBSERVABLE

Al terminar deberías poder relacionar Prototipos con Clases y encapsulación y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 35 y 55 minutos para lectura, ejemplos, tres comprobaciones y cierre.

04 / PREPARA EL LABORATORIO

Utiliza un navegador con herramientas de desarrollo y una versión LTS de Node.js con npm. Angular y MongoDB se preparan cuando llegues a esos bloques.

Abrir la guía de herramientas →
Diagnóstico rápido: ¿cómo se relacionan Prototipos y Clases y encapsulación? +

No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.

Ruta guiada · 3 lecciones

Aprende el tema paso a paso

Comprenderás delegación prototípica, clases y composición para construir objetos con invariantes sin jerarquías innecesarias.

Al terminar podrás
  • Los objetos buscan propiedades a través de su cadena de prototipos
  • class organiza construcción y métodos sobre el modelo prototípico
  • Combinar capacidades suele ser más flexible que extender clases
01
Delegación

Los objetos buscan propiedades a través de su cadena de prototipos

Cuando una propiedad no existe en el objeto, JavaScript continúa por su prototipo hasta encontrarla o llegar a null. Los métodos compartidos viven normalmente en el prototipo. Object.create permite elegir el prototipo de forma explícita; hasOwn distingue propiedades propias de heredadas.

01

La herencia de JavaScript es prototípica.

02

Una propiedad propia oculta otra del prototipo.

03

No modifiques prototipos globales de objetos incorporados.

Comprueba lo aprendido · 01

¿Qué ocurre si una propiedad no aparece en ningún eslabón de la cadena?

Mostrar respuesta +

La lectura devuelve undefined. Si luego intentas llamar ese valor como función, obtendrás un TypeError.

02
Clases e invariantes

class organiza construcción y métodos sobre el modelo prototípico

La sintaxis class no reemplaza los prototipos: ofrece una forma más clara de declarar constructor, métodos, herencia y campos privados. Un constructor debe dejar una instancia válida. Los campos # privados protegen acceso sintáctico, pero no sustituyen una buena API.

01

Valida invariantes al construir y modificar.

02

Los métodos de instancia se comparten.

03

extends solo conviene para una relación de sustitución real.

Comprueba lo aprendido · 02

¿Qué debe garantizar un constructor antes de devolver la instancia?

Mostrar respuesta +

Que se cumplan sus invariantes y que todas las propiedades necesarias tengan valores válidos.

03
Composición

Combinar capacidades suele ser más flexible que extender clases

La composición conecta objetos pequeños mediante contratos explícitos. Evita heredar métodos que no corresponden y permite sustituir almacenamiento, reloj o transporte durante pruebas. La herencia sigue siendo útil cuando toda subclase puede ocupar correctamente el lugar de la clase base.

01

Inyecta dependencias en vez de crearlas dentro.

02

Prefiere interfaces pequeñas de comportamiento.

03

No conviertas una clase en un contenedor de responsabilidades.

Comprueba lo aprendido · 03

¿Qué ventaja da inyectar repositorio?

Mostrar respuesta +

Desacopla la regla del mecanismo de persistencia y permite probarla con una implementación sencilla y determinista.

Resumen de la sección

Tu recorrido en tres ideas

  1. Los objetos buscan propiedades a través de su cadena de prototipos
  2. class organiza construcción y métodos sobre el modelo prototípico
  3. Combinar capacidades suele ser más flexible que extender clases
CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Modificar prototipos globales y afectar código ajeno.

ERROR 02

Crear una jerarquía solo para reutilizar dos métodos.

DESAFÍO INTEGRADOR

Ahora hazlo sin guía

Modela una biblioteca con préstamos válidos mediante una clase y un repositorio inyectado que pueda funcionar en memoria.

Mostrar pauta de corrección +
Una respuesta sólida:
  • El constructor y los métodos conservan invariantes.
  • La persistencia no está acoplada al dominio.
  • Prueba sustitución y errores de préstamo.