ExpertiDict

JavaScript · Avançado · Inglês · Técnico

mixin

/ˈmɪksɪn/substantivo

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 fala

Exemplos

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.

Veja também

Todos os termos de JavaScript