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.