JavaScript Orientado a Objetos


Para facilitar a compreensão da associação entre classes e objetos, pense em uma montadora de carros: a montadora "apenas" recebe os insumos (metais, borrachas etc.) e, após submetê-los a uma extensa linha de produção estritamente pensada, verificada e validada, gerando por fim os carros montados, todos sob o mesmo padrão e com as mesmas características.

Classes são como a montadora, os parâmetros da classe são como os insumos, o método construtor é como a linha de montagem e os carros são como os objetos.

O JavaScript usa funções como classes para criar objetos por meio das palavras reservadas "new" e "this". Veja um exemplo:

function Pessoa(primeiroNome, sobrenome) {
    // construa o objeto com base nos parâmetros
    this.primeiroNome = primeiroNome;
    this.sobrenome = sobrenome;

    // um método que retorne o nome completo
    this.nomeCompleto = function() {
        return `${this.primeiroNome} ${this.sobrenome}`;
    }
}

var umaPessoa = new Pessoa("Thales", "Silva");
console.log(umaPessoa.nomeCompleto());

retorna "Thales Silva"

Criar um objeto por meio da palavra reservada "new" equivale a executar o seguinte código:

var umaPessoa = {
    primeiroNome: "Thales",
    sobrenome: "Silva",
    nomeCompleto: function() {
        return `${this.primeiroNome} ${this.sobrenome}`;
    }
}

A diferença entre ambas as formas de criar objetos é que a primeira usa uma classe cujo instanciamento se dá pela palavra reservada "new" para fins de padronização em larga escala, já a segunda cria uma só instância de objeto imediatamente.

Exercise

Crie uma classe chamada "Person" que aceite o nome da pessoa como string pelo parâmetro "name" e sua idade como número pelo parâmetro "age".

A classe "Person" deve possuir o método "describe", que retornará uma string formatada sob a seguinte constituição: "name, age years old". Isto é, se Jack tiver 25 anos e a função "describe" de seu objeto for executada, será exibido o texto "Jack, 25 years old".


Copyright © learn-js.org. Read our Terms of Use and Privacy Policy