JavaScript · Avançado · Inglês · Técnico
mixin
Padrão para compor comportamento reutilizável numa classe, geralmente com uma função que recebe uma classe base e devolve uma subclasse com novos métodos. Contorna a herança única.
Onde usar
Usado quando várias classes sem relação precisam do mesmo comportamento, como eventos ou serialização. Em code review, mixins em excesso dificultam saber de onde vem cada método.
Em código
const Fala = (B) => class extends B {
falar() { return this.nome + ' fala'; }
};
class Pessoa { nome = 'Ana'; }
class Aluno extends Fala(Pessoa) {}
console.log(new Aluno().falar());
// Ana falaExemplos
We added logging to the class through a mixin.
Adicionamos log à classe por meio de um mixin.
Too many mixins make the prototype chain hard to follow.
Mixins demais deixam a cadeia de protótipos difícil de seguir.
Cuidado
Esperar herança múltipla de verdade: a cadeia de protótipos continua linear.