Mixin pattern
Em vez de criar uma árvore de herança complexa, use mixins para reutilizar comportamentos em classes que não têm relação de pai-filho. Por exemplo, frameworks como jQuery ou bibliotecas de eventos aplicam mixins para adicionar funcionalidades a objetos de forma flexível. Com Object.assign você 'cola' métodos de um objeto literal no prototype da classe alvo.
O PROBLEMA
Crie mixins Nadador e Corredor. Aplique ambos em Triatleta usando Object.assign no prototype.
EXEMPLO
const t = new Triatleta("Ana");
t.nadar() → "Ana está nadando"
t.correr() → "Ana está correndo"SOBRE O CONCEITO
Um mixin é um objeto literal com métodos que podem ser 'emprestados' para outras classes. Usando Object.assign(Classe.prototype, mixin), você copia as propriedades do mixin para o prototype da classe, fazendo com que todas as instâncias herdem esses métodos. Erro comum é confundir mixin com herança: o mixin não estabelece uma relação 'é um' (herança), apenas compõe comportamentos. Outro erro é a ordem dos Object.assign: se vários mixins tiverem métodos com o mesmo nome, o último vence. Como extends é proibido, você não pode usar herança; a composição com mixins resolve isso.
RESOLUÇÃO