0
class language {
    constructor() {
        this.phrases = {};
        this.isPhrasesLoaded = false;
        this.currentPage = undefined;
        this.language = 'RU';
    }
    loadPhrases(after) {
        $.getJSON('./js/pages/phrases.json', function(msg) {
            this.phrases = msg;
            this.isPhrasesLoaded = true;
            console.dir(this.phrases);
            console.log('----PHRASES LOADED----');
            after();
        });
    }
}

$(document).ready(function() {
    let PHRASES         = new language();
    PHRASES.loadPhrases(function() {
        console.log(PHRASES.phrases);
    });
});

Недавно тут писал, про это. Странная дичь происходит. this.phrases не устанавливается. Вернее устанавливается внутри loadPhrases -> getJSON А глобально - нет. Даже если вручную в консоль ввести console.dir(PHRASES.phrases), уже после загрузки, т.е. самостоятельно. Выдается пустой объект. Почему так? Что с этим сделать?

Т.е. при отладке вы можете увидеть, внутри $.getJSON переменная присваивается, всё ок. Далее логом выдается этот объект. Потом идет надпись ---PHRASES LOADED---. И далее, я уже хочу взаимодействовать с этим объектом. Однако он оказывается пустой. Странное что-то. Впервые такое за 5 лет.

введите сюда описание изображения

Так-же пробовал после загрузки делать так

setTimeout(function() {
    console.log(PHRASES.phrases);
}, 10000);

Ничего не помогает и не работает.

theMidas
  • 43
  • 6
  • @АлексейШиманский бро спасибо! Внимание не обратил, тороплюсь когда пишу!) Не юзаю в основном стрелочные функции. В начале ф-ции пишу let SELF = this. И потом общаюсь с SELF объектом!) Спасибо огромное!) – theMidas Aug 01 '21 at 17:16

0 Answers0