Padrões de projeto I: Classes de JavaScript?!?

O JavaScript não tem realmente classes como outras linguagens. Na verdade, elas são funções nos bastidores. Existem várias maneiras de criar classes.

Desafio

  • Crie uma classe Book usando uma função de JavaScript: instanciável.
  • Ela deve ter uma propriedade author e uma propriedade published.

  • Crie uma classe Author usando um objeto literal: singleton.

  • Ela deve ter uma propriedade name e uma propriedade books.

  • Crie uma classe Publisher usando o construtor new e uma função anônima: singleton.

  • Ela deve ter uma propriedade authors e uma propriedade books.

  • Crie uma classe Review usando uma declaração de class: instanciável.

  • Ela deve ter uma propriedade rating e uma propriedade user.

Bônus (opcional)

Crie uma classe Bookstore usando uma IIFE: singleton. Ela deve ter uma propriedade books e uma propriedade prices.

Observações

  • Todas as classes devem começar com letras maiúsculas.
  • Todas as propriedades das classes devem ter valores padrão (iniciais).
  • Existem algumas outras maneiras de criar classes, mas elas não fazem parte deste desafio; você pode consultar a aba Resources para saber mais.