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

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

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 Report

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