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

99
Views
llame a métodos de una clase sin usar la palabra clave NUEVA dentro de otro nodo de clase js

Quiero acceder a los métodos de la clase Principal a otra clase de Persona sin crear una nueva instancia. ¿Es posible? ¿Podemos acceder a él sin crear una instancia de una clase?

let myInstance = new Person();

 class Main { constructor(args) { this.hooks = []; } add_hooks(name, func) { if (!this.hooks[name]) this.hooks[name] = []; this.hooks[name].push(func); } call_hooks(name, ...params) { if (this.hooks[name]) this.hooks[name].forEach((func) => func(...params)); } }

otra clase Persona cómo acceder sin usar una nueva palabra clave

 const Main = require("./main.js"); class Person { exec() { const action = Main(); action.add_hook("jump", console.log.bind(console, "this will log ")); } }
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Si no planea instanciar el objeto y no le importa tener varias instancias, cada una con su propio estado, no necesita una clase.

Simplemente cree funciones individuales o exporte un objeto.

 const hooks = []; export function add_hooks(name, func) { if (!hooks[name]) hooks[name] = []; hooks[name].push(func); } export function call_hooks(name, ...params) { if (!hooks[name]) return; for (const func of this.hooks[name]) { func(...params); } }

También es posible hacer esto con métodos estáticos, y esa sería la respuesta probable si escribe Java donde todo tiene que ser una clase, pero no lo recomendaría en Javascript.

about 4 years ago · Juan Pablo Isaza Report

0

No hay gran magia en ello. Dado que el OP solo quiere reutilizar los métodos Main prototípicos, uno va a delegar explícitamente los métodos de interés que se proporcionaron/a los que se accedió antes a través Main.prototype ...

 class Main { constructor(args) { this.hooks = {}; } add_hooks(name, func) { if (!this.hooks[name]) { this.hooks[name] = []; } this.hooks[name].push(func); } call_hooks(name, ...params) { if (this.hooks[name]) { this.hooks[name].forEach(func => func(...params)); } } } // const Main = require("./main.js"); class Person { // // ... either add `hooks` as public property at instantiation time ... // hooks = {}; exec() { const ref = Main.prototype; ref.add_hooks.call(this, "jump", console.log.bind(console, "this will log")); } } // ... or add `hooks` via additional glue code ... function createPersonWithHooksAndExecute() { const type = new Person(); type.hooks = {}; type.exec(); return type; } const someone = createPersonWithHooksAndExecute(); console.log({ someone }); // this will log Main.prototype.call_hooks.call(someone, "jump");
 .as-console-wrapper { min-height: 100%!important; top: 0; }

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!