Repasa objetos, arrays y funciones. Las clases se explican sobre el modelo de prototipos de JavaScript.
Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.
Ubícate antes de avanzar
Al terminar deberías poder relacionar Prototipos con Clases y encapsulación y resolver un caso nuevo.
Reserva entre 35 y 55 minutos para lectura, ejemplos, tres comprobaciones y cierre.
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.
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.
- 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
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.
La herencia de JavaScript es prototípica.
Una propiedad propia oculta otra del prototipo.
No modifiques prototipos globales de objetos incorporados.
¿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.
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.
Valida invariantes al construir y modificar.
Los métodos de instancia se comparten.
extends solo conviene para una relación de sustitución real.
¿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.
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.
Inyecta dependencias en vez de crearlas dentro.
Prefiere interfaces pequeñas de comportamiento.
No conviertas una clase en un contenedor de responsabilidades.
¿Qué ventaja da inyectar repositorio?
Mostrar respuesta +
Desacopla la regla del mecanismo de persistencia y permite probarla con una implementación sencilla y determinista.
Tu recorrido en tres ideas
- 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
Comprueba que puedes usarlo
Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.
Modificar prototipos globales y afectar código ajeno.
Crear una jerarquía solo para reutilizar dos métodos.
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 +
- El constructor y los métodos conservan invariantes.
- La persistencia no está acoplada al dominio.
- Prueba sustitución y errores de préstamo.
