Muito válido, quando necessário!
Como a galera ja disse, vai depender da complexidade e do que você precisa implementar.
Vou dar um exemplo prático:
eu trabalhava em um sistema web, JS puro (sem frameworks de front js).
A feature em questão precisava fazer um "Crud" de clientes, fazer pesquisa por alguns campos como nome, telefone e e-mail e adicional a uma lista os escolhidos. Tudo como se fosse um SPA parcial, onde somente no final do fluxo eram enviadas as atualizações dos dados e a lista de escolhidos.
Pra isso, além dos Scripts normais de manipulação do DOM, precisei criar dois módulos o de Clientes e o de Pesquisa.
Em clientes, criei uma Cliente estruturada como o backend necessitava, além de criar os métodos pertinentes.. add, remove, load, update, validate, getCallback, setcallback, e de estado listed addToList e etc...
Em pesquisa, criei o módulo Search, onde cada pesquisa ativa e seu estado eram um objeto da classe Search, junto com os métodos pertinentes para instaciar e gerenciar as pesquisas ativas (podiam ser mais de uma e cada qual tinha ocseu estado diferente).
e xada pesquisa tinha um objetivo, por exemplo mostrar ou esconder componentes, e cada instância fazia o ue precisasse com os Matchs usando a callbacks registrada naquela instância.
Percebeu que esteuturar tudo em objetos da uma noção maior e mais clara? Se eu apenas fosse tacando um amontoado de funções ia ficar uma bagunça por mais organizado que fosse... coitado de quem desse manutenção depois kkkkkkk