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

189
Views
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 answers
Answer question

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 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!