Introducción a JavaScript

1

Fundamentos de JavaScript para Principiantes

2

Instalación y Configuración de JavaScript en Visual Studio Code

3

Instalación y configuración de Visual Studio Code y Node.js en Windows

4

Variables y Buenas Prácticas en JavaScript

5

Tipos de Datos en JavaScript: Primitivos y Complejos

6

Manipulación de Strings en JavaScript: Escritura, Concatenación y Substrings

7

Números y Operaciones Matemáticas en JavaScript

8

Conversión de Tipos en JavaScript: Implícita y Explícita

9

Conversión de Tipos en JavaScript: Explícita e Implícita

Estructuras de Control y Lógica

10

Operadores de Comparación en JavaScript: Igualdad y Desigualdad

11

Operadores Lógicos en Programación: AND, OR y NOT

12

Estructuras Condicionales: Uso de IF, ELSE y ELSE IF en JavaScript

13

Juego de Adivinanza: Programación con Estructuras Condicionales

14

Estructura y uso del condicional Switch en programación

15

Ciclo For: Iteración de Listas y Uso de Console.log en JavaScript

16

Iteración con for-of en JavaScript para arrays y strings

17

Iteración sobre Objetos con forIn en JavaScript

18

Uso del ciclo while para iteración en programación

19

Ciclos doWhile: Estructura y Diferencias con While

Funciones y This

20

Funciones en JavaScript: Cómo Calcular Precios con Descuentos

21

Diferencias entre Funciones y Métodos en JavaScript

22

Funciones Puras e Impuras en Programación: Conceptos y Ejemplos

23

Arrow Functions y Enlace Léxico en JavaScript

24

Scope y Contextos de Ejecución en JavaScript

25

Closures y Ámbito Léxico en JavaScript

26

Fundamentos del Desarrollo Web: Frontend y Backend

Manipulación de Arrays

27

Arrays: Propiedades, Acceso y Creación en Programación

28

Mutabilidad e inmutabilidad en arrays: conceptos y ejemplos prácticos

29

Métodos push y pop para modificar arrays en JavaScript

30

Métodos map y forEach en JavaScript: Uso y Ejemplos Prácticos

31

Métodos Filter y Reduce en JavaScript: Uso y Ejemplos Prácticos

32

Métodos find y findIndex en JavaScript: Uso y ejemplos prácticos

33

Uso del método slice para extraer porciones de un array en JavaScript

34

Uso del Spread Operator en JavaScript: Copia, Combinación y Más

Programación Orientada a Objetos

35

Programación Orientada a Objetos en JavaScript: Conceptos y Práctica

36

Creación y Manipulación de Objetos en JavaScript

37

Función constructora y gestión de instancias en JavaScript

38

Clases en JavaScript: Creación y Uso de Objetos con Sintaxis Moderna

39

Programación Orientada a Objetos en JavaScript: Clases y Prototipos

40

Prototipos y Herencia en JavaScript: Construcción y Uso Práctico

41

Métodos y herencia prototípica en JavaScript

42

Uso de "this" en Clases y Funciones Constructoras

43

Validación de Usuarios en una Red Social: Algoritmo Básico

44

Implementación de la Función Sign-In y Validación de Usuario

Asincronía en JavaScript

45

Programación Síncrona y Asíncrona en JavaScript

46

Promesas en JavaScript: Asincronía y Manejo de Estados

47

Uso de Async/Await para Promesas Asíncronas en JavaScript

48

Peticiones asíncronas con for await en JavaScript

49

Fundamentos de HTTP: Cliente-Servidor y Métodos de Petición

50

Peticiones HTTP en Frontend: Uso de Fetch y Análisis en Network

51

Peticiones HTTP en JavaScript: Fetch, GET, POST y DELETE

52

Envío de Datos al Servidor con JavaScript y Fetch API

53

Eliminar Posts con JavaScript y Delegación de Eventos

54

Manejo de IDs en JavaScript para eliminar artículos del DOM

55

Actualizaciones y Nuevas Funciones en JavaScript

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Programación Orientada a Objetos en JavaScript: Clases y Prototipos

39/55
Recursos

¿Cómo funciona la programación orientada a objetos en JavaScript?

La programación orientada a objetos es crucial para entender cómo JavaScript maneja objetos y prototipos. A diferencia de otros lenguajes que utilizan clases basadas en herencia, JavaScript emplea prototipos para gestionar las propiedades y métodos que se comparten entre objetos. Aquí es donde entra en juego la función constructora o clase constructora. Pero, ¿cómo ocurre esto realmente bajo el capó?

¿Qué es un prototipo en JavaScript?

Un prototipo en JavaScript es un objeto del cual otros objetos heredan propiedades y métodos. Al crear una función constructora (o clase constructora), JavaScript automáticamente genera un prototipo asociado a esa función, que se usa como un "molde" para crear instancias de objetos.

En el siguiente ejemplo, creamos una clase constructora para un objeto Persona:

function Persona(nombre, edad, altura, nacionalidad) {
    this.nombre = nombre;
    this.edad = edad;
    this.altura = altura;
    this.nacionalidad = nacionalidad;
}

Persona.prototype.saludar = function() {
    return `Hola, mi nombre es ${this.nombre}, ¿cómo te llamas tú?`;
};

¿Cómo se crean las instancias de una clase?

Cuando necesitas crear una instancia de un objeto a partir de una clase constructora, llenas este "molde" con los datos específicos. Por ejemplo, al crear una instancia de Persona, como es el caso de José:

var jose = new Persona('José', 30, 1.70, 'colombiano');

¿Qué es la herencia en JavaScript?

La herencia en JavaScript se refiere a la capacidad de un objeto para acceder a propiedades y métodos de otro objeto. Este mecanismo se realiza mediante el uso de prototipos. En el caso anterior, la instancia jose hereda el método saludar del prototipo de Persona.

Al usar el método heredado, el saludo de José se vería así:

console.log(jose.saludar());
// Salida: Hola, mi nombre es José, ¿cómo te llamas tú?

¿Cuál es la ventaja de usar prototipos?

El uso de prototipos en JavaScript permite crear funciones que se comparten entre todas las instancias de una misma clase constructora, evitando así la duplicación y optimizando el uso de memoria. Además, facilita la extensión de objetos sin la necesidad de redefinir métodos para cada instancia nueva.

¿Cómo mejorar la eficiencia en la programación orientada a objetos?

  • Reutiliza métodos: Aprovechar la herencia de métodos mediante prototipos permite que las instancias compartan métodos sin replicarlos.
  • Modulariza el código: Dividir el código en funciones y clases separadas hace que sea más fácil de mantener y depurar.
  • Documenta y comenta: Explicar la lógica de tu código es crucial, especialmente al trabajar con estructuras complejas como la herencia de prototipos.
  • Experimenta con patrones de diseño: Patrones como el patrón módulo o el patrón fábrica pueden ser útiles para estructurar y gestionar mejor tu código orientado a objetos.

La programación orientada a objetos en JavaScript puede cambiar la forma en que gestionas y utilizas objetos, haciéndola una herramienta poderosa y flexible para cualquier desarrollador que busque optimizar su código y mejorar su flujo de trabajo.

Aportes 13

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Sigue que sí puedes terminar el curso 👏🏻
Sencillamente, cuando creamos una **clase,** se genera tambien un **prototipo de la misma**, que tiene todas las **propiedades y metodos de la clase en la cual se basa ese prototipo**. Miralo como un clon.
yo con José: ![](https://static.platzi.com/media/user_upload/image-6b64031b-db33-4238-b46e-ebf0a60406fe.jpg)
**Pequeño resumen:** Un **prototipo** tiene todas las propiedades y métodos que se crearon con una clase o función constructora, que luego se van a compartir o *heredar* en las instancias que se crearán para dicha clase.
![](https://static.platzi.com/media/user_upload/image-5157d3c2-38ac-46d5-8167-c7973089135b.jpg)
**Prototipo** Es un mecanismo por el cual los objetos en JavaScript pueden heredar propiedades y métodos de otros objetos. Cada objeto en JavaScript tiene una propiedad interna llamada **\[\[Prototype]]**, que apunta a otro objeto, conocido como su prototipo. Cuando accedes a una propiedad o método en un objeto, JavaScript busca primero en el propio objeto. Si no la encuentra, busca en su prototipo, y así sucesivamente hasta llegar al final de la cadena de prototipos. **Herencia** En JavaScript se refiere al proceso mediante el cual un objeto puede adquirir las propiedades y métodos de otro objeto.
![](https://static.platzi.com/media/user_upload/image-2f68a3e9-024e-4fac-a61f-d619b882a4e7.jpg) Les recomiendo el siguiente video, es muy bueno para profundizar en el concepto del objeto prototype. . <https://youtu.be/a2tp64Vtzxs?si=GuEC8mPUC6Ad4hGX> . Voy a dejar unos datos interesantes que se hablan en el video: . * Todo JavaScript está compuesto por objetos * Los arrays, funciones, métodos, strings, booleans, numbers tienen su propio prototype. Puedes revisar el prototype del tipo de dato con el siguiente código: `Object.getPrototypeOf(tipoDeDato)` * Puedes heredar el prototype de una estancia a otra con `Object.getPrototypeOf(estanciaObjetivo, estanciaQueHereda)` * Otra manera de heredar prototypes: `estancia.__proto__ = estancia2.prototype`. Esto no es recomendado, puede generar conflictos y lacks de rendimiento. * Como ejemplo hablemos unicamente de un objeto, cuando creas un nuevo objeto si o si este ya tiene acceso al prototype de código nativo, el cuál ya cuenta con metodos como .toString(), entre otros. * Hablando del punto anterior pero ahora sobre arrays, al crear un array este tiene acceso al prototype base el cual contiene métodos de array como filter, findIndex, map, splice, slice, etc.
Referido a la clase anterior y actual. Entonces suponiendo que tengo una clase Products y varias instancias. Es posible desde un método de la clase por ej. updatePrice() actualizar los precios un cierto porcentaje? Esto sería una caso correcto de uso en la vida real ?? Muchas gracias.
Me gustaron las descripciones graficas lo hace mas sencillo y entiendo que es como un "molde"
Gracias por las explicaciones
![](https://static.platzi.com/media/user_upload/image-59fbe662-c560-474a-8770-9196c391fc09.jpg)
al crear una clase, en este caso persona, esta genera un prototipo, al iniciar una nueva intalcia de una persona 'jose', por medio del protopido este hereda las propiedades y metodos.
## Programación orientada a objetos en JavaScript * JavaScript funciona con objetos y prototipos, y la programación orientada a objetos se basa en el concepto de herencia. * Entender cómo funcionan los prototipos y la herencia es crucial para trabajar con clases y funciones constructoras en JavaScript. ## Clases y funciones constructoras * Una clase o función constructora actúa como un molde para crear objetos. * Estas estructuras definen propiedades y métodos que se utilizarán para crear instancias con información específica. ## Prototipos en JavaScript * Las funciones constructoras generan automáticamente un prototipo. * El prototipo contiene todas las propiedades y métodos que se compartirán o heredarán en las instancias creadas a partir de la clase principal. ## Ejemplo de clase y herencia class Persona { constructor(nombre, edad, altura, nacionalidad) { this.nombre = nombre; this.edad = edad; this.altura = altura; this.nacionalidad = nacionalidad; } saludar() { console.log(`Hola, mi nombre es ${this.nombre}, ¿cómo te llamas tú?`); } } * En este ejemplo, se define una clase `Persona` con un constructor y un método `saludar`. * El constructor recibe cuatro parámetros: `nombre`, `edad`, `altura`, y `nacionalidad`. ## Crear instancias de una clase * Para crear una instancia de una clase, se utiliza la palabra reservada `new`. const jose = new Persona('José', 30, 1.70, 'Colombiano'); jose.saludar(); * En este ejemplo, se crea una instancia de la clase `Persona` llamada `jose`. * La instancia se inicializa con los valores 'José', 30, 1.70, y 'Colombiano' para las propiedades `nombre`, `edad`, `altura`, y `nacionalidad`. * El método `saludar` se llama en la instancia `jose`, imprimiendo el mensaje correspondiente. ## Beneficios de la herencia y los prototipos * Los prototipos permiten que las instancias hereden propiedades y métodos definidos en la clase principal. * Esto facilita la reutilización de código y la creación de objetos con funcionalidades compartidas. ## Próximos pasos * Practicar creando y utilizando clases y funciones constructoras en JavaScript para familiarizarse con la sintaxis y las funcionalidades. * Explorar la documentación oficial de JavaScript para profundizar en conceptos avanzados de prototipos y herencia. * Aplicar el uso de clases y herencia en proyectos reales para aprovechar las ventajas de la programación orientada a objetos.