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

206
Visualizações
¿Cómo se implementan correctamente los métodos de instancia de una función constructora?

Se proporciona la siguiente función de constructor y el código de registro...

 function Car(brand, year, model, color, utilidad) { this.brand = brand; this.year = year; this.model = model; this.color = color; this.utilidad = utilidad; this.useFor = (prmt) => { this.utilidad.push(prmt); } }; const toyota = new Car("Toyota", 2021, "Prado", "Red", "city"); toyota.useFor('mountain'); console.log(toyota);

En lugar de obtener los datos de registro esperados, el código se rompe con el siguiente mensaje...

 TypeError: "this.utilidad.push is not a function"

¿Por qué pasó esto?

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

0

porque * .push () se usa para insertar datos en una matriz, pero coloca la cadena "ciudad" en el parámetro predeterminado;

about 4 years ago · Juan Pablo Isaza Relatório

0

Del comentario anterior...

"El OP no construyó un prototipo, pero estaba implementando una función que está destinada a ser utilizada como constructor para crear instancias de Car . Además, el OP está inicializando toyota con un argumento de utilidad escrito incorrectamente que se supone que es una matriz y no una cadena para permitir que el método useFor se inserte más tarde en la propiedad de utilidad del objeto".

Por lo tanto, una implementación Car refactorizada internamente podría usar valores iniciales o predeterminados para valores de argumentos omitidos. Podría introducir alguna verificación de tipo formal para no romper con TypeError debido a tipos de argumentos proporcionados incorrectamente. Y además de las tareas de asignar los argumentos como propiedades propias a un objeto, implementa su único método en el prototype de la función constructora...

 function Car( brand = 'unknown', year = 'not provided', model = 'unknown', color = 'not provided', utilidad = [], ) { return Object.assign(this, { brand, year, model, color, utilidad: Array.isArray(utilidad) ? utilidad : [utilidad], }); }; Car.prototype.useFor = function useFor (value) { this.utilidad.push(value); }; const dummy = new Car(); const toyota = new Car('Toyota', 2021, 'Prado', 'Red', 'city'); dummy.useFor('test field'); toyota.useFor('mountain'); console.log({ dummy, toyota });
 .as-console-wrapper { min-height: 100%!important; top: 0; }

La próxima iteración podría introducir la sintaxis de clase y un constructor que espera una sola configuración u argumento de opciones...

 class Car { constructor({ brand = 'unknown', year = 'not provided', model = 'unknown', color = 'not provided', utilidad = [], }) { Object.assign(this, { brand, year, model, color, utilidad: Array.isArray(utilidad) ? utilidad : [utilidad], }); } // prototype method(s) useFor(value) { this.utilidad.push(value); } } const dummy = new Car({}); const toyota = new Car({ brand: 'Toyota', year: 2021, model: 'Prado', color: 'Red', utilidad: 'city', }); dummy.useFor('test field'); toyota.useFor('mountain'); console.log({ dummy, toyota });
 .as-console-wrapper { min-height: 100%!important; top: 0; }

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