Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

195
Views
Comprender la herencia prototípica (Javascript)

Estoy tratando de entender cómo funciona la herencia prototípica cuando uso funciones de constructor en Javascript. Tome el siguiente código, por ejemplo:

 let Animal = function (name, species, birthYear) { this.name = name; this.species = species; this.birthYear = birthYear; }; let spike = new Animal(`Spike`, `Dog`, 2000); Animal.prototype.calculateAge = function () { let age = 2022 - this.birthYear; return age; }; Animal.prototype.color = `brown`; spike.calculateAge(); console.log(spike.color); console.log(spike);

Estas últimas tres líneas son lo que me cuesta entender. Por favor, hágame saber si mi comprensión está equivocada en algún punto de mi explicación.

Puedo llamar al método de cálculo de edad () en el objeto de pico porque heredó el método del prototipo Animal. De manera similar, puedo registrar la propiedad de color de picos en la consola porque el objeto de pico heredó la propiedad de color del prototipo Animal. Cuando inspecciono el objeto de pico usando console.log(), tiene las propiedades de nombre, especie y año de nacimiento que definí, pero también hay un prototipo. ¿Significa esto que el objeto de pico contiene el prototipo, o simplemente identifica el prototipo del que heredó el método y la propiedad antes mencionados? Además, realmente no siento que entiendo qué es este prototipo Animal. Entiendo que el código funciona y eso está muy bien, pero ¿qué diablos es este prototipo de Animal? ¿Es su propio objeto en sí mismo?

Gracias por cualquier explicación que pueda ofrecer.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Creo que primero debe comprender profundamente el paradigma orientado a objetos detrás de Javascript.

Javascript es un lenguaje de programación orientado a objetos basado en prototipos.

Las operaciones se codifican en la estructura de datos prototipo en un lenguaje prototipo, que se copia y actualiza en tiempo de ejecución. Sin embargo, una clase sigue siendo la clase de equivalencia para todos los objetos con el mismo espacio de estado y métodos cuando se ve de forma abstracta. Estás creando efectivamente un elemento de una nueva clase de equivalencia cuando agregas un método al prototipo.

Entonces, ¿por qué estás haciendo eso? Principalmente porque da como resultado un sistema de tiempo de ejecución que es sencillo, lógico y elegante. Para crear un nuevo objeto o clase, simplemente haga una copia profunda, que copia todos los datos, así como la estructura de datos del prototipo. Entonces obtiene herencia y polimorfismo por casi nada: una búsqueda de método siempre implica solicitar una implementación de método por nombre de un diccionario.

Para ser más específicos, JavaScript es un lenguaje orientado a objetos basado en prototipos, lo que significa que no tiene clases y en su lugar define comportamientos mediante funciones de construcción, que luego se pueden reutilizar utilizando el prototipo.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!