If you're seeing this message, it means we're having trouble loading external resources on our website.

Se você está atrás de um filtro da Web, certifique-se que os domínios *.kastatic.org e *.kasandbox.org estão desbloqueados.

Conteúdo principal

Revisão: Objetos

Essa é uma revisão do que abordamos nesse tutorial sobre objetos.
Nós temos muitos tipos de valores que podemos armazenar em variáveis de JavaScript, e às vezes nós queremos armazenar um grupo de valores relacionados juntos: é aqui onde os objetos entram!
Um objeto é um tipo de dado que nos permite armazenar uma coleção de propriedades em uma única variável. Para criar um objeto, podemos declarar uma variável como nós faríamos normalmente, e então nós usamos chaves para cercar os pares chave-valor de propriedade:
var objectName = { 
  propertyName: propertyValue,
  propertyName: propertyValue,
  ...
};
Aqui está um objeto que descreve o Winston - este objeto tem duas propriedades, hometown e hair, e cada um dos valores de cada propriedade são sequência de caracteres (strings):
var aboutWinston = {
  hometown: "Mountain View, CA",
  hair: "no"
};
Aqui é um objeto mais complexo que descreve um gato (cat), com quatro propriedades age, furColor, likes e birthday.
var lizzieTheCat = {
  age: 18,
  furColor: "grey",
  likes: ["catnip", "milk"],
  birthday: {"month": 7, "day": 17, "year": 1994}
};
Observe como cada propriedade armazena um tipo de dado diferente - age armazena um número, furColor armazena uma string likes armazena um vetor (arranjo) e aniversário armazena a outro objeto. Isso é a que tem de legal sobre objetos (bem, uma das coisas legais) - eles podem armazenar outros objetos dentro deles! Então você pode ter profundamente objetos aninhados para descrever dados complexos.
Você também pode ver objetos declarados com o nome da propriedade entre aspas, assim:
var aboutWinston = {
  "hometown": "Mountain View, CA",
  "hair": "no"
};
Isso é equivalente ao que vimos antes, sem aspas, mas leva mais tempo para escrever. A única vez que você realmente precisa usar aspas é quando se declara uma propriedade vazia:
var aboutWinston = {
  "his hair": "none"
};
Temos que usar aspas, porque caso contrário o interpretador de JavaScript irá se confundir. Aqui está a minha dica para você: não utilize espaço em branco no nome das propriedades! Então você nunca terá que usar aspas em torno dos nomes de propriedade.

Acessando as propriedades do objeto

Um objeto não é útil, se não pudermos olhar dentro dele e utilizar os valores das diferentes propriedades. Podemos fazer isso de duas maneiras - primeiro, usando o que chamamos de "notação de ponto" (dot notation), onde escrevemos o nome da variável, seguido por um "." e em depois o nome da propriedade:
var aboutWinston = {
  hometown: "Mountain View, CA",
  hair: "no"
};

text("Winston is from " + aboutWinston.hometown, 100, 100);
text("Winston has " + aboutWinston.hair + " hair", 100, 150);
Também podemos usar a "notação de colchetes", que é bastante parecida com a forma como acessamos elementos em um arranjo, escrevendo o nome da variável, e então o nome da propriedade entre aspas, dentro dos colchetes:
var hisHometown = aboutWinston["hometown"];
var hisHair = aboutWinston["hair"];
Se tentarmos acessar uma propriedade que não existe, temos como retorno "undefined":
text("O objetivo da vida de Winston é " + aboutWinston.lifeGoal, 100, 150);

Modificando as propriedades do objeto

Assim como quando armazenamos tipos de dados em variáveis, podemos alterar os valores das propriedades dos objetos a qualquer hora durante um programa, usando a notação de ponto ou de colchetes:
aboutWinston.hair = "curly"; // Winston conseguiu uma peruca!
Também podemos adicionar novas propriedades!
aboutWinston.lifeGoal = "ensinar JavaScript";
Se não quisermos mais ter uma determinada propriedade, podemos deletá-la (mas na maioria das vezes vamos apenas alterar o seu valor):
delete aboutWinston.hair;

Arranjos de objetos

Agora que você conhece tanto os arrays quanto os objetos, você pode combiná-los para criar arrays de objetos, que são formas muito úteis de armazenar dados em programas. Por exemplo, um array de gatos:
var myCats = [
  {name: "Lizzie", 
   age: 18},
  {name: "Daemon",
   age: 1}
];

for (var i = 0; i < myCats.length; i++) {
  var myCat = myCats[i];
  println(myCat.name + ' is ' + myCat.age + ' years old.');
}
Observe que podemos iterar por meio de um arranjo de objetos da mesma forma que podemos iterar por meio de um arranjo de números ou strings, usando um loop for. Dentro de cada iteração, podemos acessar o elemento do arranjo atual com notação de colchetes e em seguida, acessar as propriedades desse elemento do arranjo (um objeto) com a notação de ponto.
Aqui temos outro exemplo prático que você pode usar em seus programas, um arranjo de coordenadas:
var positions = [
    {x: 200, y: 100},
    {x: 200, y: 200},
    {x: 200, y: 300}
];

for (var i = 0; i < positions.length; i++) {
    var position = positions[i];
    ellipse(position.x, position.y, 100, 100);
}
Elegante, não é? Os objetos podem ser confusos a princípio, mas conforme você os usa, você fica viciado e quer transformar tudo em um objeto!

Quer participar da conversa?

Você entende inglês? Clique aqui para ver mais debates na versão em inglês do site da Khan Academy.