Коллеги, доброго времени суток, уперся в проблему, прошу помощи, советом, суть такая, приложение пишу на es6 классами. Про DOMContentLoaded инициализирую приложение:
import App from './app.js';
const app = new App();
Самый App:
export default class Application {
    constructor() {
        eventEmitter.init();
        this.main = document.getElementById('application');
        this.controls = new Controls(this.main); // контролы
        this.searchList = new SearchList(this.main); // список объектов
        this.controller = new Controller(); // обработчик кнопок
    }
}
Ну и так далее по списку, суть приложения - работа с таблицами продажными. this.searcList это таблица обычная, с данными. У меня стоит задача сделать фильтр для этой таблицы. Но видимо не судьба.
В SearchList я создаю класс фильтр:
constructor(container, array) {
        this.bus = eventEmitter.bus;
        this.container = container;
        this.filter = this.container.querySelector('.filter');
        this.config = new Config(array); // текущее состояние фильтра
        this.bus.on('filter:sortTable', this.sortTable.bind(this));
        this.bus.on('filter:utils', this.openFilterUtils.bind(this));
        this.bus.on('filter:saveUtils', this.saveUtils.bind(this));
        this.bus.on('filter:checkCategory', this.checkCategory.bind(this));
        this.bus.on('filter:areaRange', this.areaRange.bind(this));
    }
Суть следующая, я загружаю таблицу в контейнер, далее собираю this.config - который включает в себя параметры по которым нужно собрать фильтр. При первой загрузке страницы все нормально, собирается и фильтруется, но вот если я закрою таблицу и потом опять открою то конфиг остается прежним, хотя по сценарию он должен пересобираться:
Это метод open из класса SearchList:
open(array) {
        if (array.length) {
            if (this.container.getAttribute('data-status') === 'open') return;
            this.filter = new Filter(this.container, array); // создаем фильтр
            this.build(); // строим таблицу
            this.filter.build((objects) => { // строим фильтр и отдаем объекты для тела таблицы
                this.buildTable(objects); // строим тело таблицы
                this.container.setAttribute('data-status', 'open'); // выводим
            });
        } else {
            this.bus.emit('controls:off');
            this.bus.emit('popup:open', `<p>Данных нет!.</p>`);
        }
    }
Далее сам фильтр: 
constructor(container, array) {
        this.bus = eventEmitter.bus;
        this.container = container;
        this.filter = this.container.querySelector('.filter');
        this.config = new Config(array); // текущее состояние фильтра
        this.bus.on('filter:sortTable', this.sortTable.bind(this));
        this.bus.on('filter:utils', this.openFilterUtils.bind(this));
        this.bus.on('filter:saveUtils', this.saveUtils.bind(this));
        this.bus.on('filter:checkCategory', this.checkCategory.bind(this));
        this.bus.on('filter:areaRange', this.areaRange.bind(this));
    }
    build(callback) { // первое открытие
       // тут сборка html блоков
    }
собственно сам this.config:
constructor(array) {
        this.bus = eventEmitter.bus;
        this.objects = array; // массив объектов
        this.areas = [];
        this.instance = {};
        this.init();
    }
    init() { // заводские настройки
        this.instance.area = [];
        this.instance.utils = [];
        let cats = {};
        let areas = [];
        this.objects.forEach(item => {
            areas.push(item.area_value);
            cats[item.category] = true;
        });
        this.instance.area = [Math.min.apply(Math, areas), Math.max.apply(Math, areas)];
        this.areas = [Math.min.apply(Math, areas), Math.max.apply(Math, areas)];
        for (let key in cats) {
            let obj = {
                cat_code: '',
                cat_name: key,
                cat_select: true,
                resolutions: []
            };
            let resolutions = [];
            this.objects.forEach(item => {
                if (obj.cat_name.indexOf(item.category) !== -1) {
                    resolutions.push(item.util_code);
                    obj.cat_code = item.category_type;
                }
            });
            util.clearArray(resolutions, array => {
                array.forEach(res => {
                    obj.resolutions.push({
                        name: res,
                        select: true
                    });
                });
                this.instance.utils.push(obj);
            });
        }
        this.getCounter();
    }
Видимо ссылки на старый объект или свойства не дают ему придти в новое состояние
Заранее благодарю, за дельные советы