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

190
Visualizações
Método de anulación de la clase que está dentro de la función.

Tengo la siguiente estructura en el archivo a.js

 function factory() { class A { constructor() { } add(num) { return num + 1; } } return A; }

Me gustaría cambiar el comportamiento del método "agregar". El método "agregar" se vería a continuación. Suma de 2 en lugar de 1.

 add(num) { return num + 2; }

He creado un nuevo nombre de archivo como b.js

 const a = import("a.js"); (new factory()).prototype.add = function(num) { return num + 2; }

Pero no cambia el comportamiento del método add dentro de la función "fábrica" (archivo a.js). Me gustaría cambiar el comportamiento del método "agregar" de la función "fábrica" (a.js). ¿Podría brindarme ayuda u orientación?

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

0

Cada llamada a la función de factory creará y devolverá una nueva clase.

Por lo tanto, agregar el método add en el prototipo de una clase devuelta por la llamada particular a la función de factory no tendrá ningún efecto en las clases devueltas por otras llamadas a la función de factory .

La siguiente demostración muestra cómo puede lograr el resultado deseado.

 function factory() { class A { add(num) { return num + 1; } } return A; } const MyClass = factory(); MyClass.prototype.add = function (num) { return num + 2; }; const b = new MyClass(); console.log(b.add(1));

Si vuelve a llamar a la función de factory , devolverá una nueva clase que tendrá el método de add que agrega solo 1.

La siguiente demostración muestra esto en acción:

 function factory() { class A { add(num) { return num + 1; } } return A; } const MyClassA = factory(); const MyClassB = factory(); // Overwrite "add" method in MyClassA MyClassA.prototype.add = function (num) { return num + 2; }; console.log(new MyClassA().add(1)); // 3 console.log(new MyClassB().add(1)); // 2 (MyClassB uses the defaul "add" method)

Por lo tanto, deberá agregar el método add en el prototipo cada vez que se llame a la función factory .


Una forma de evitar sobrescribir el método add cada vez que llama a la función de factory es crear otra función, que:

  1. Llama a la función de factory
  2. Actualiza el método de add
  3. Devuelve la clase con el método add actualizado

Con este enfoque, el código que sobrescribe el método add es reutilizable.

El siguiente código muestra un ejemplo:

 function factory() { class A { add(num) { return num + 1; } } return A; } function factoryWrapper() { const MyClass = factory(); MyClass.prototype.add = function(num) { return num + 2; }; return MyClass; } const Class1 = factoryWrapper(); const Class2 = factoryWrapper(); console.log(new Class1().add(1)); console.log(new Class2().add(1));

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