Gustavo, o desafio é responder a pergunta!
Desafio: Seguindo a mesma lógica, é possível usar métodos modernos, como map() e filter() com strings?
A resposta é que o map e filter não fazer parte do prototípe da string e sim do array.
Aqui é a parte da documentação falando sobre Strings
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String#methods
Aqui é a parte da documentação falando sobre Arrays
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
Pode ver que na documentação de strings que filter e map nem são mencionados.
Eu vejo uma possibilidade de fazer com map, split e reduce, pq o split iria dividir todas as palavras como um array de letras, depois faria o map para fazer o upperCase em todas as letras e depois concatenar com o reduce.