ES6 (babele): best practice per creare classi

1

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

    
posta Danis 16.02.2018 - 11:34
fonte

0 risposte

Leggi altre domande sui tag