Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Chamada de método estático

Em

var stores = ['negociacoes'];
var cersion = 4;
var dbName = 'aluraframe'

class ConnectionFactory {

    constructor(){

        throw new Error('Não pode instanciar Connection')
    }

    static getConnection(){

        return new Promise((resolve, reject) => {

            let openRequest = windows.indexedDB.open(dbName, version);

            openRequest.onupgradeneeded = e => {
                ConnectionFactory._createStore(e.target.result);
            }

            openRequest.onsuccess = e => {

            }

            openRequest.onerror = e => {

            }
        });
    }

    static _createStore(connection){
        stores.forEach(store => {
            if (connection.ObjectStoreNames.contains(store))
                connection.deleteObjectStore();

            connection.createObjectStore(store, { autoIncrement: true });
        })

    }
}

Qual a diferença na chamada do metodo _createStore

            openRequest.onupgradeneeded = e => {
                ConnectionFactory._createStore(e.target.result);
            }

ou

            openRequest.onupgradeneeded = e => {
                this._createStore(e.target.result);
            }
4 respostas

O "this" serve pra você acessar a instância atual da classe, como o _createStore é estático, ele não tem uma instância para acessar.

Sim sim.

Mas executando os dois códigos o resultado é o mesmo

solução!

É por causa do contexto léxico de this em arrow functions:

e => {
                this._createStore(e.target.result);
            }

Quando essa função é declarada ele troca automaticamente o this para ConnectionFactory.

Vou testar com function.

Obrigado