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

102
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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