• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

98
Views
java script cómo acceder a la función dentro del mismo módulo cuando esto no apunta al módulo sino al alcance global

Al llamar a una función en el módulo de esta manera

 app.get("/api/sessions/oauth/google", (req, res) => { return google_callback.googleOAuthHandler(req, res); });

this apunta al módulo y se puede acceder a otra función en el módulo usando this

 googleOAuthHandler : async function (req, res) { const code = req.query.code.toString(); const {id_token, access_token} = await this.getGoogleOAuthToken(code); }

Sin embargo, pasar la función como parámetro cambia this a global y this.getGoogleOAuthToken se vuelve indefinido, es decir, al hacer

 app.get("/api/sessions/oauth/google", google_callback.googleOAuthHandler);

¿Cómo accedo a getGoogleOAuthToken en googleOAuthHandler en el módulo google_callback cuando lo uso de esta manera?

almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

app.get("/api/sessions/oauth/google", google_callback.googleOAuthHandler);

Al pasar la función de esta manera, this no significa el module . Entonces this.getGoogleOAuthToken no funciona.

sin embargo, podemos usar module.exports.getGoogleOAuthToken para acceder a la función dentro del mismo módulo. Usar module.exports.getGoogleOAuthToken también funciona en el primer ejemplo.

Alternativamente, si no le gusta que module.exports llame a la función, puede colocar la línea const _this = this; en la parte superior del archivo o const _this = module.exports = { ... } y use _this.function para llamar a una función dentro del módulo.

También noté que en el primer ejemplo this.function solo funciona porque estoy usando esta sintaxis.

 module.exports = { func1 : function(){}, func2 : function(){} }

al exportar con

 module.exports.func1 = function(){} module.exports.func2 = function(){}

this no se puede utilizar para acceder a la otra función

almost 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error