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

Se sei dietro un filtro web, assicurati che i domini *. kastatic.org e *. kasandbox.org siano sbloccati.

Contenuto principale

Ripasso: Oggetti

Questo è un ripasso di ciò che abbiamo visto nel tutorial sugli oggetti.
Esistono molti tipi di valori che possiamo memorizzare nelle variabili in JavaScript, e a volte vogliamo memorizzare un gruppo di valori correlati tra loro: ecco dove entrano in gioco gli oggetti!
Un oggetto è un tipo di dati che ci permette di archiviare un insieme di proprietà in una singola variabile. Per creare un oggetto, dichiariamo una variabile come faremmo normalmente e poi usiamo le parentesi graffe per raggruppare le coppie proprietà-valore:
var objectName = { 
  propertyName: propertyValue,
  propertyName: propertyValue,
  ...
};
Ecco un oggetto che descrive Winston: questo oggetto ha due proprietà, hometown e hair, e i valori delle proprietà sono stringhe:
var aboutWinston = {
  hometown: "Mountain View, CA",
  hair: "no"
};
Ecco un oggetto più complesso che descrive un gatto, con quattro proprietà: age, furColor, likes, e birthday.
var lizzieTheCat = {
  age: 18,
  furColor: "grey",
  likes: ["catnip", "milk"],
  birthday: {"month": 7, "day": 17, year: 1994}
};
Puoi notare che ciascuna proprietà memorizza un tipo di dato diverso: age memorizza un numero, furColor memorizza una stringa, likes memorizza un array, e birthday memorizza un altro oggetto. Ecco la cosa davvero forte degli oggetti (beh, una delle cose davvero forti): possono memorizzare altri oggetti al loro interno! Quindi puoi avere oggetti annidati in più livelli per descrivere dati complessi.
A volte vedrai oggetti dichiarati utilizzando le virgolette per racchiudere i nomi delle proprietà, come:
var aboutWinston = {
  "hometown": "Mountain View, CA",
  "hair": "no"
};
Questo è equivalente a ciò che abbiamo scritto prima senza le virgolette, ma ci vuole di più a digitarlo. L'unica volta in cui devi assolutamente usare le virgolette è se il nome della proprietà contiene uno spazio, come:
var aboutWinston = {
  "his hair": "none"
};
Qui dobbiamo usare le virgolette perché altrimenti l'interprete di JavaScript si potrebbe confondere. Ecco il mio consiglio: semplicemente, non usare lo spazio dentro ai nomi delle proprietà! Così non sarai mai costretto a usare le virgolette intorno ai nomi delle proprietà.

Accedere alle proprietà di un oggetto

Un oggetto non è utile a meno che non siamo in grado di guardare all'interno di esso e usare i valori delle sue diverse proprietà. Possiamo farlo in due modi: in primo luogo, utilizzando ciò che chiamiamo "notazione puntata", dove si scrive il nome della variabile, seguito da un "." e poi dal nome della proprietà:
var aboutWinston = {
  hometown: "Mountain View, CA",
  hair: "no"
};

text("Winston is from " + aboutWinston.hometown, 100, 100);
text("Winston has " + aboutWinston.hair + " hair", 100, 150);
Possiamo anche usare la "notazione con le parentesi quadre", che è simile a come accediamo agli elementi di un array. Scriviamo il nome della variabile, poi le parentesi quadre con il nome della proprietà all'interno delle virgolette:
var hisHometown = aboutWinston["hometown"];
var hisHair = aboutWinston["hair"];
Se proviamo ad accedere a una proprietà che non esiste, vedremo "undefined":
text("Winston's life goal is " + aboutWinston.lifeGoal, 100, 150);

Modificare le proprietà di un oggetto

Proprio come quando archiviamo altri tipi di dati nelle variabili, possiamo cambiare i valori delle proprietà dell'oggetto in qualsiasi momento durante un programma, usando la notazione puntata o quella con le parentesi quadre:
aboutWinston.hair = "curly"; // Winston ora ha una parrucca!
Possiamo anche aggiungere proprietà completamente nuove!
aboutWinston.lifeGoal = "teach JavaScript";
Se abbiamo finito con una proprietà, possiamo eliminarla (ma la maggior parte delle volte probabilmente cambieremo solo il suo valore):
delete aboutWinston.hair;

Array di oggetti

Ora che conosci sia gli array che gli oggetti, puoi combinarli per creare array di oggetti, che in realtà è un modo davvero utile per memorizzare dei dati nei programmi. Ad esempio, un array di gatti:
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.');
}
Puoi notare che scorriamo un array di oggetti esattamente nello stesso modo in cui scorriamo un array di numeri o di stringhe, utilizzando un ciclo for. All'interno di ogni iterazione, accediamo all'elemento corrente dell'array usando la notazione con le parentesi quadre, e poi accediamo alle proprietà di quell'elemento dell'array (che è un oggetto) con la notazione puntata.
Ecco un altro esempio pratico che potresti utilizzare nei tuoi programmi, ovvero un array di coordinate per la posizione:
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);
}
Abbastanza carino, eh? Gli oggetti possono crearti confusione all'inizio, ma se continui a utilizzarli, alla fine diventerai dipendente e trasformerai tutto in un oggetto!