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

133
Visualizações
¿Los parámetros enviados a un constructor de módulos de JavaScript requieren un manejo especial?

Tengo un módulo de javascript que se parece a esto:

 var TestModule = function(param) { this.display = function() { console.log(`testModule.display called, with parameter: ${param}`); } } module.exports = TestModule;

También tengo un programa que usa este módulo, así:

 var TestModule = require('./test-module.js'); var testModule = new TestModule('asdf'); testModule.display();

Cuando ejecuto el programa, obtengo el siguiente resultado:

 testModule.display called, with parameter: asdf

Todo esto parece estar bien hasta ahora y hacer lo que quiero: hacer que el valor que envío esté disponible para las funciones dentro del módulo.

Sin embargo, también he visto lo siguiente hecho en el código del módulo:

 var TestModule = function(param) { this.param = param; this.display = function() { console.log(`testModule.display called, with parameter: ${this.param}`); } } module.exports = TestModule;

Ejecutar esta segunda versión me da el mismo resultado que la primera.

Mi pregunta es, ¿cuál es el propósito de this.param = param ? ¿Qué hace eso por mí que mi versión original no hace?

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

0

La principal diferencia es que el objeto devuelto por el constructor tiene la propiedad adjunta a su prototipo.

En la segunda versión, console.log(testModule.param) da "asdf" y la primera versión da esta propiedad como undefined .

Si adjunta funciones al prototipo, que es el enfoque normal porque solo define cada función una vez, los cierres de estas funciones no verán el param si no se ha adjuntado a this como lo hace la segunda versión.

El module.exports no tiene nada que ver con esto, por cierto.

about 4 years ago · Juan Pablo Isaza Relatório

0

this.param = param

Almacenará el argumento en el objeto en sí, permitiéndole hacer testModule.param y acceder a él (como cuando hace testModule.display() para acceder al método de display )

Además, debe usar la sintaxis de clase ES6 para modernizar su código

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