Tengo un problema de binding confuso sobre las clases de javascript en node.js.
en un proyecto, tiene dos tipos de uso de las clases: module1 y module2 .
1th module1 códigos: const controller = require('app/http/controllers/controller.js'); class homeController extends controller { index(req,res){ res.send(this.message()); } message(){ return ('<p> i am home controller.js</p>'); } } module.exports = new homeController(); Debido a que permite usar el método de homeController.index , hereda el auto-bind del módulo del controller . si no usamos auto-bind , cuando usemos el método de homeController.index , dará el error de que el message() no está definido.
¡Hasta ahora está bien!
pero, en el siguiente módulo, no usa auto-bind , ¡pero el método de helpers.getObjects funciona correctamente!
¡No da el error de que auth() no está definido!
2th module : module.exports = class Helpers { constructor(req,res) { this.req = req; this.res = res; } //how works without extending the auto-bind?! getObjects() { return { auth: this.auth()}; } auth() { return { check: this.req.isAuthenticated(), user: this.req.user } } } en otras palabras, espero, helpers.getObjects , solo cuando funciona (cuando puede recibir el método auth() , que extiende el auto-bind , al igual que modulecode (1), ¡pero funciona sin eso!
¡me confundió!
¿Qué diferencia de identificación?