JavaScript no es un lenguaje orientado a objetos puro por varias razones, entre ellas:
- No permite la creación de clases, sino de plantillas (Funciones constructoras –pseudo clases-)
- Podemos tener funciones (function()) que no se encuentren encapsuladas en una clase, lo cual no es posible en un lenguaje de POO puro.
- No hay soporte directo de herencia ni algunas formas de polimorfismo como sobrecarga de métodos
No obstante, hay algunos hacks o trucos para lograr algunos de estos comportamientos del paradigma P.O.O.
Adicionalmente, en JavaScript, existen varias formas de crear objetos/plantillas, la primera forma que veremos es con una función constructora, la segunda forma es con una notación literal de objetos, vamos a mezclar ambas para conocer un poco de las dos.