Использование функций не делает вас функциональным программистом. Вам нужно понять, чего добивается функциональное программирование.
Например, чистая функция:
- Не изменяет свой аргумент (ы)
- Возвращает тот же вывод для того же входа
- Не имеет побочных эффектов
Так что я слышу, что класс преобразуется в функции (ы) под капотом ... Отлично. Будут ли они чистыми? Это зависит.
В вашем конкретном случае это не так. И это из-за природы вещи, с которой вы работаете: элемента DOM.
Ваш .html()
метод почти гарантированно нечист, например:
const el = document.querySelector('#foo');
const elem = new Elem(el);
elem.html();
//=> e.g. "foo"
el.innerHTML = "bar";
elem.html();
//=> "bar"
внешний мир может изменить поведение ваших функций. Следовательно, ваши функции нечисты и, следовательно, ваш класс и все его экземпляры.
С другой стороны, ваш класс также может изменить мир:
elem.cls = ['become-super-big'];
Это может или не может сделать ваше приложение непригоден к использованию и / или конфликтует с другими частями вашего приложения. Это определенно не очень хорошая вещь.
То, чего я лично пытаюсь добиться с помощью функционального программирования (поверьте мне, нелегко), это предсказуемость. Ваша система и ее меньшие части должны иметь предсказуемое поведение при одинаковых обстоятельствах. Всегда, все время. Без компромиссов.
Можете ли вы иметь чистый класс? Интересный вопрос! Может быть. Боюсь, конечно, не так, как ты к нему подходишь.