Skip to content

Instantly share code, notes, and snippets.

@oieduardorabelo
Created August 26, 2017 23:19
Show Gist options
  • Save oieduardorabelo/5553d5a4c04c22e385c5bac5d24149be to your computer and use it in GitHub Desktop.
Save oieduardorabelo/5553d5a4c04c22e385c5bac5d24149be to your computer and use it in GitHub Desktop.
// definimos a classe
class Observable {
// cada instância da classe Observer
// começa com um array vazio de observadores/observers
// que reagem a uma mudança de estado
constructor() {
this.observers = [];
}
// adicione a capacidade de inscrever um novo objeto / Elemento DOM
// essencialmente, adicione algo ao array de observadores
subscribe(f) {
this.observers.push(f);
}
// adicione a capacidade de cancelar a inscrição de um objeto em particular
// essencilamente, remove algum item do array de observadores
unsubscribe(f) {
this.observers = this.observers.filter(subscriber => subscriber !== f);
}
// atualiza todos os objetos inscritos / Elementos DOM
// e passa alguns dados para cada um deles
notify(data) {
this.observers.forEach(observer => observer(data));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment