Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda