Las clases en JavaScript no son iguales a otros lenguajes de programación. Los lenguajes de programación suelen estar orientados a objetos y basados en clases, mientras que en JavaScript está orientado a objetos y basado en prototipos.
En JavaScript hay multiples formas de crear objetos y todos los objetos están construidos con prototipos.
Se basan en el concepto de entidades o clases
Clases: Define las propiedades que caracterizan un determinado conjunto de objetos. .
Una clase es una entidad abstracta
Instancias: Instanciación de una clase, de uno de sus miembros. Una instancia tiene exactamente las mismas propiedades de su clase padre, ni una más ni una menos.
No hace las mismas distinciones que los lenguajes basados en clases, simplemente tiene objetos.
<aside> 📌 En un lenguaje basado en prototipos puedo crear dos objetos a partir del mismo prototipo y añadirle una propiedad a uno de ellos que no necesariamente va a tener el otro objeto. Mientras que en uno basado en clases cada objeto tendrá las mismas propiedades siempre.
</aside>
La programación orientada a objetos (POO; en español o OOP, según sus siglas en inglés) es un paradigma de programación donde cada elemento del proyecto es visto como un objeto y todo lo relacionado con este objeto debe vivir dentro de este objeto. Los objetos se utilizan como metáfora para emular las entidades reales del negocio a modelar.
Un paradigma NO es mejor que otro, depende de la situación y el contexto.
Cada lenguaje puede trabajar con 1 o varios paradigmas.