GUÍA 7 - POO Javascript
GUÍA 7 - POO Javascript
RETO: Crear las funciones constructoras y definir los métodos en la propiedad prototype del
constructor
Modelo: Automóvil
Instanciar tres objetos y ejecutar sus métodos
Atributos: Métodos:
• Marca • informaciónVehiculo()
• Herencia basada en prototipos: En lugar de utilizar clases para crear objetos, JavaScript utiliza
prototipos como plantillas para la creación de objetos. Cada objeto en JavaScript tiene un
prototipo que puede ser otro objeto. Cuando se busca una propiedad o método en un objeto,
JavaScript lo buscará primero en el propio objeto y, si no lo encuentra, lo buscará en su prototipo.
Esto permite la herencia de propiedades y métodos entre objetos de una manera más flexible.
• Objetos como diccionarios: En JavaScript, los objetos pueden verse como colecciones de pares
clave-valor, donde las claves (llamadas propiedades) son cadenas de texto o símbolos y los
valores pueden ser cualquier tipo de dato. Esta flexibilidad facilita la creación dinámica de
objetos y la adición o eliminación de propiedades en tiempo de ejecución.
• Constructor de funciones: Aunque JavaScript no tiene clases en el sentido tradicional, las
funciones pueden utilizarse como constructores para crear objetos. Cuando se llama a una
función con el operador new, se crea un nuevo objeto y se establece su prototipo en la función
constructora. Esto permite crear objetos con propiedades y métodos compartidos utilizando
funciones como prototipos; es importante tener en cuenta que los métodos y propiedades
son definidos en la propiedad prototype, que reside en la función constructora del objeto.
• Herencia prototípica múltiple: JavaScript permite que un objeto tenga múltiples prototipos, lo
que se conoce como herencia prototípica múltiple. Esto permite a los objetos heredar
propiedades y métodos de varios prototipos, lo que puede ser muy útil en casos especiales. En
JavaScript, se establece un enlace entre la instancia del objeto y su prototipo (su propiedad
__proto__, la cual es derivada de la propiedad prototype sobre el constructor), y las
propiedades y métodos son encontrados recorriendo la cadena de prototipos.
Otros conceptos que debemos tener en cuenta para trabajar con objetos en JavaScript:
ACTIVIDADES
Para comprender mejor los fundamentos de prototipos en JavaScript, trabajaremos desde el lado
cliente; para ello necesitaremos que el editor VS Code tenga instalada la extensión Live Server
y configuramos una plantilla index.html para contener el código JavaScript.
1. OBJETO LITERAL
Literalmente hemos escrito el contenido del objeto tal como lo fuimos creando.
Los objetos creados a través de una función constructora utilizan un patrón de diseño
donde los métodos se definen en el prototipo, pero las propiedades de los datos se
definen en el constructor. Esto se debe a que los métodos suelen ser los mismos para cada
objeto que creamos, mientras que a menudo queremos que cada objeto tenga su propio valor
para sus propiedades de datos.
En JavaScript, todas las funciones tienen una propiedad denominada prototype. Cuando
se llama a una función como constructor, esta propiedad se establece como el
prototipo del objeto recién construido (por convención, en la propiedad denominada
(__proto__); entonces, si configuramos la propiedad prototype, podemos asegurarnos de
que todos los objetos creados con ese constructor reciban ese prototipo:
3. HERENCIA PROTOTIPICA
La herencia prototípica es un concepto fundamental en JavaScript que se refiere a la forma en
que los objetos heredan propiedades y métodos de otros objetos en el lenguaje. A diferencia de
otros lenguajes de programación que utilizan el concepto de clases para definir la estructura de
los objetos, JavaScript utiliza prototipos para la herencia.
• Prototipo: Cada objeto en JavaScript tiene un prototipo, que es otro objeto. Un objeto
puede heredar propiedades y métodos de su prototipo. Si intentas acceder a una
propiedad o método en un objeto y este no lo tiene, JavaScript buscará en su prototipo
y en la cadena de prototipos hasta encontrar la propiedad o método o llegar al objeto
base (Object.prototype).
• Objeto base: En JavaScript, el objeto base de todos los objetos es Object.prototype.
Esto significa que todos los objetos heredan propiedades y métodos de
Object.prototype. Por ejemplo, todos los objetos en JavaScript tienen métodos como
toString() y valueOf() gracias a esta herencia.
• Herencia de propiedades y métodos: Cuando accedes a una propiedad o método en
un objeto, JavaScript primero busca en el propio objeto. Si no encuentra la propiedad o
método, busca en su prototipo y así sucesivamente a lo largo de la cadena de prototipos.
Esto permite compartir propiedades y métodos entre objetos sin duplicar código.
• Herencia múltiple: JavaScript permite que un objeto tenga múltiples prototipos. Esto se
conoce como herencia prototípica múltiple. Si un objeto no encuentra una propiedad o
método en su prototipo principal, puede buscar en otros prototipos que estén en su
cadena de prototipos.
La herencia prototípica es una parte fundamental de cómo funciona JavaScript y es una de las
razones por las que el lenguaje es tan flexible y poderoso en la creación y manipulación de
objetos. Permite la creación de estructuras de objetos complejas y la reutilización de código de
manera efectiva.