Ho una classe di prodotto. Quando tento di fare riferimento a this
all'interno di un metodo sulla classe, viene visualizzato un errore che dice this is undefined
. Per risolvere questo, devo associarlo a tutti i metodi. E questo, per tutte le mie lezioni. Ecco l'esempio:
class Product {
constructor() {
this.init = this.init.bind(this);
this.create = this.create.bind(this);
this.update = this.update.bind(this);
this.delete = this.delete.bind(this);
this.getAll = this.getAll.bind(this);
this.getOne = this.getOne.bind(this);
this.init();
}
/**
* initiate microservices' calls
*/
init() {
this.microserviceCalls = {
create: 'PRODUCT:create',
update: 'PRODUCT:update',
delete: 'PRODUCT:delete',
getAll: 'PRODUCT:getAll',
getOne: 'PRODUCT:getOne',
};
}
async create(req, res) {
...
}
async update(req, res) {
...
}
async delete(req, res) {
...
}
async getAll(req, res) {
...
}
async getOne(req, res) {
...
}
}
export default new Product();
Le mie domande sono
- Come posso evitare
.bind(this)
? - C'è un modo migliore per impostare la variabile
microserviceCalls
? -
Come posso scrivere una classe base, che implementerà automaticamente
bind(this)
su tutti i metodi? Qualcosa del genere:function bindStuff (context, props) { props.forEach(prop => { context[prop] = context[prop].bind(context); }) }
Grazie)))