View on GitHub

Capacitacao-CEOS-2-Javascript

Objetos

Em Javascript, existe um outro tipo de valor muito importante: Object.

Javascript é uma linguagem orientada a objetos, então na prática, praticamente tudo é um objeto.

Podemos criar um objeto simplesmente usando {}.

Exemplo:

let a = {};

Pronto, agora a tem um objeto vazio.

Mas na prática, objetos tem várias propriedades.

Propriedades são como variáveis que estão ligadas ao objeto, isto é, as propriedades tem um nome e podem guardar um valor.

Podemos definir as propriedades do nosso objeto usando objeto.nomeDaPropriedade = valor.

Exemplo:

a.propriedade = "nossa primeira propriedade";

Para acessar uma propriedade, basta fazer objeto.nomeDaPropriedade.

Exemplo:

console.log(a.propriedade); // "nossa primeira propriedade";

Existe uma notação alternativa, muito similar a da linguagem Python, para definir e acessar propriedades de objetos:

Para definir, é possível usar também objeto["nomeDaPropriedade"] = valor

Exemplo:

let novoObjeto =  {};

novoObjeto["nome"] = "Novin";

E para acessar, basta fazer objeto["nomeDaPropriedade"]

Exemplo:

console.log(novoObjeto["nome"]); // "Novin"

Perceba que na notação alternativa (com []), é necessário por o nome da propriedade como uma String.

Quando tentamos acessar uma propriedadade que ainda não foi definida, o valor dela será undefined.

Pode experimentar no console do seu navegador pra ver esse comportamento.

Também podemos criar objetos com algumas propriedades já definidas:

let carro = {"rodas": 4, "cor": "Branco", nome: "Fuscão 1010", ano: 2074};

Seguindo o padrão propriedade: valor, e separando cada par chave-valor por virgulas. O nome das propriedades pode ser uma String com o nome ou o próprio nome da propriedade diretamente.

Outro exemplo:

let linguagem = {nome: "Javascript", "criadaEm": 1995};

Na prática, usamos objetos para modelar objetos e coisas da vida real em nossos programas.

Também podemos ter outros objetos como propriedades de um objeto:

let roda = {aro: 15, fabricante: "Ferrari"};
let carro = {};

carro.nome = "Fuscão";
carro.rodas = roda;
carro.motor = {
    tipo: "1.6",
    cavalos: 500
};

carro.freios = {};

carro.freios.tipo = "ABS";
carros.freios.validadeFinal = 1999;

A propriedade de um objeto também pode ser uma função:

let carro = {}

carro.ligar = function() {
    console.log("VRUMMMMMMMMMMMMMMMMMMMMMMMMM");
}

carro.ligar();

Nesse caso, criamos uma função sem nome, porém ela também podia ter um nome, tranquilamente.

Quando propriedades de um objeto guardam funções, chamamos de métodos.

O objeto carro tem um método ligar.

Mais pra frente, iremos aprender mais sobre métodos.

Isso que fizemos acima, só é possível porque em Javascript, funções também são objetos, portanto, na prática elas também podem ter propriedades:

function bla() {
    console.log("iei");
}

bla.frase = "Que doidera";
console.log(bla.frase);

Objetos também podem ser passados pra funções, e retornados de funções também:

function fazAlgo(objeto) {
    objeto.a = 15;

    console.log(objeto.a);
}

let objeto = {};
fazAlgo(objeto);

console.log(objeto.a);

Um detalhe muito importante nesse exemplo: os objetos são passados por referencia, portanto, quando modificamos alguma propriedade do objeto dentro da função, essa modificação também vai ser visível fora da função.

Resumindo: em Javascript, podemos criar objetos vazios usando {} ou objetos já preenchidos, usando {propriedade1: valor, propriedade2: valor}. Objetos tem propriedades, que podem guardar qualquer valor, inclusive funções. Se a propriedade de um objeto for uma função, é comum chamarmos essa função de método. E por fim, quando passamos um objeto pra uma função, as alterações feitas no objeto dentro da função, refletem no objeto original que foi passado pra função.