Показать сообщение отдельно
  #6 (permalink)  
Старый 01.11.2018, 17:13
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

MC-XOBAHCK, я не обратил внимание на свойства вашего объекта, извините.
const content = {
    header: this.parseContent('header'),
    main: this.parseContent('main'),
    footer: this.parseContent('footer'),

    parseContent: function(id) {
        let txt = [];
        document.querySelectorAll(id + ' div').forEach((div, i) => txt[i] = div.textContent);
        return txt
    }
}

Так объявлять значения для свойств нельзя, ошибка будет.
Вы при объявлении значений свойств пытаетесь обратиться через контекст к еще не созданному объекту "content", поэтому this будет указывать не на объект "content", а на "родительскую" ОВ.
Разберите пример Dilettante_Pro, он исправил эту ошибку заменой свойств на методы.
Еще можно было бы сделать так, но это какое-то извращение:
const content = {
    parseContent: function(id) {
        let txt = [];
        document.querySelectorAll(id + ' div').forEach((div, i) => txt[i] = div.textContent);
        return txt
    }
};

['header', 'main', 'footer'].forEach(key => content[key] = content.parseContent(key));
Ответить с цитированием