Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

309
Visualizações
Funciones Javascript, herencia de múltiples prototipos

Tengo una tarea para implementar un diagrama usando prototipos y constructores de javascript. Por ahora tengo que implementar la herencia múltiple usando prototipos. Sé cómo implementar la herencia única y estoy atascado en la herencia de múltiples prototipos.

Diagrama UML

Esta pregunta se centra en los objetos Event y DataType heredados de WeatherData .

 import { DataType, Event } from "./../common/EventData.mjs" export function WeatherData(value, { time, place }, { type, unit, isInternational }) { Event.call(time, place) DataType.call(type, unit, isInternational) this.value = value } WeatherData.setPrototypeOf(WeatherData.prototype, Event.prototype) WeatherData.setPrototypeOf(WeatherData.prototype, DataType.prototype) WeatherData.prototype.getValue = function () { return this.value }

No he probado el código, pero estoy seguro de que está mal porque el segundo .setPrototypeOf() sobrescribe la primera función, lo que significa que el prototipo de WeatherData será DataType .

He buscado en Internet y no pude encontrar respuesta para esto, tal vez porque esta metodología está obsoleta.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Uno podría darle al código del OP un intento de refactorización del código de pegamento de herencia múltiple como este ...

 import { DataType, Event } from "./../common/EventData.mjs" function WeatherData( value, { time, place }, { type, unit, isInternational } ) { // - close to an instance level super call but done twice. // // - technically applying two function based mixins. Event.call(this, time, place); DataType.call(this, type, unit, isInternational) this.value = value } // - prototype level kind of multiple superclass extension. // // - technically mixed-in prototype objects via // `Object.assign` WeatherData.prototype = Object.assign( // ... aggregate a compound prototype. {}, Event.prototype, DataType.prototype, ); // prevent latest mixed-in super-constructor, here // `DataType`, from being the sub-classed constructor. WeatherData.prototype.constructor = WeatherData; WeatherData.prototype.getValue = function () { return this.value; } export/* default*/ WeatherData;

La implementación del constructor anterior cubre la parte de mezcla a nivel de instancia/objeto. El código que agrega y asigna un compuesto prototipo de otros dos objetos prototipo es lo más cercano que se puede llegar a la herencia múltiple con lo que está disponible en JS.

Pero el diseño del código anterior también tiene fallas en el sentido de que dicho prototipo compuesto pierde cualquier vínculo adicional con cualquiera de las cadenas de prototipos posiblemente disponibles de Event o DataType .

Por lo tanto, desde una perspectiva de modelado, era mejor si la base de código disponible se proporcionara de manera que se pudiera permitir que WeatherData heredara de DataType , mientras que una implementación agnóstica de prototipo de Event podría aplicarse adicionalmente como una combinación basada en funciones.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda