Link Search Menu Expand Document

Javascript Orientado a Objetos

Um objeto é um conjunto de propriedades e métodos estruturados em uma única variável ou elemento.

O exemplo a seguir cria um objeto:

let pessoa = {
    nome: 'Willian',
    sobrenome: 'Mustafa',
    idade: '27'
};

Para acessar uma propriedade, pode ser usado o nome da variável e um ponto ou a variável e o nome da propriedade uma array:

let pessoa = {
    nome: 'Willian',
    sobrenome: 'Mustafa',
    idade: '27'
};
console.log(pessoa.nome) // Exibe Willian

console.log(pessoa['nome']) // Exibe Willian

Uma propriedade com espaço precisa ser colocada entre aspas e só pode ser acessada via array.

Você também pode alterar o valor de uma propriedade como se fosse uma variável comum:

let pessoa = {
    nome: 'Willian',
    sobrenome: 'Mustafa',
    idade: '27'
};
pessoa.nome = 'Thaila'; // Altera o nome da variável pessoa

Você também pode inserir funções dentro de um objeto, chamados de métodos:

let pessoa = {
    nome: 'Willian',
    sobrenome: 'Mustafa',
    idade: '27',
    digaOi: function(){ // ES6 pode ser escrito como "digaOi(){"
        console.log('Oi!');
    }
};

pessoa.digaOi(); // Imprime: Oi!

A utilização de linguagem orientada a objetos é sempre recomendada por criar um ambiente que facilita o desenvolvimento e manutenção do código. Uma implementação muito utilizada para isso são as Classes.


Class

Uma classe é um tipo de função que haje como um objeto. A seguir são demonstradas diversas possibilidades usando uma classe e explicadas a seguir.

class Pessoa{
    constructor(inp_nome, inp_sobrenome) {
        this.nome = inp_nome;
        this.sobrenome = inp_sobrenome;
    }

    // um Getter pode ser usado para chamar qualquer propriedade ou um conjunto de propriedades onde se espera que uma ordem seja seguida, como no exemplo abaixo
    get nomeCompleto() {
        return this.nome + ' ' + this.sobrenome;
    }

    digaOi() {
        console.log('Oi!');
    }

    // Método static não pode ser acessado fora do contexto de uma classe
    static quantidadeLetras(){
        return this.nome.length
    }
}

let funcionario = new Pessoa('Renato', 'Silva');

console.log(funcionario.nome); // Renato
console.log(funcionario.nomeCompleto); // Renato Silva

funcionario.digaOi(); // Oi!

funcionario.quantidadeLetras(); // TypeError, um método static não pode ser acessado de fora da classe

Percorrendo Objetos

Objetos possuem métodos especiais para iterar suas propriedades, como For…In, Object.keys(), etc.

For…in

Utilizado para fazer um loop entre as propriedades do objeto.

for(let prop in funcionario){
    console.log(prop);
    console.log(funcionario[prop]);
}
// nome
// Renato
// sobrenome
// Silva

Object.keys()

Utilizado para retornar uma array com todas as propriedades do objeto.

console.log(Object.keys(funcionario)) // Array ["nome", "sobrenome"]

Object.values()

Utilizado para retornar uma array com todos os valores nas propriedades do objeto.

console.log(Object.values(funcionario)) // Array ["Renato", "Silva"]

Object.entries()

Transforma o objeto em uma array em um par [propriedade, valor].

console.log(Object.entries(funcionario)) // Array [["nome", "Renato"], ["sobrenome", "Silva"]]