Oggetti
Un oggetto raggruppa valori collegati sotto dei nomi. In { name: "Coco", age: 3 }, pet.name dà "Coco" e pet.age dà 3.
Valori con un'etichetta
Un array va bene per una lista di cose simili in ordine. Molte cose del mondo si descrivono meglio con un insieme di informazioni etichettate: un animale domestico ha un nome, una specie e un'età; un prodotto ha un titolo, un prezzo e una quantità in magazzino. Un oggetto memorizza proprio questo. È una raccolta di proprietà, e ogni proprietà è una chiave (l'etichetta) abbinata a un valore.
const pet = {
name: "Coco",
kind: "cat",
age: 3,
};
console.log(pet.name); // Coco
console.log(pet["kind"]); // cat
console.log(pet.age + 1); // 4Un oggetto si scrive fra parentesi graffe, con ogni proprietà nella forma key: value e virgole fra l'una e l'altra. È ammessa una virgola finale dopo l'ultima proprietà. Per leggere una proprietà scrivi l'oggetto, un punto e la chiave: pet.name. L'altra forma usa le parentesi quadre e una stringa: pet["kind"]. Le parentesi quadre servono quando la chiave è memorizzata in una variabile, come in pet[field], o quando contiene uno spazio. Leggere una chiave che non esiste dà undefined.
Modificare e aggiungere proprietà
Assegna un valore a una proprietà per cambiarla, e assegnalo a una chiave nuova per aggiungerne una. Come per gli array, funziona anche quando l'oggetto è stato dichiarato con const, perché la variabile punta ancora allo stesso oggetto.
const player = { name: "Sam", score: 0 };
player.score += 10;
player.level = 2;
console.log(`${player.name} ${player.score} ${player.level}`); // Sam 10 2
delete player.level;
console.log(player.level); // undefinedListe di oggetti
Array e oggetti si combinano in modo naturale. Un array di oggetti è il modo in cui la maggior parte dei programmi conserva dei record: un carrello della spesa, l'elenco di una classe, una serie di risultati di ricerca. Scorri l'array con un ciclo e leggi da ogni oggetto le proprietà che ti servono.
const basket = [
{ item: "pen", price: 2 },
{ item: "book", price: 12 },
{ item: "bag", price: 25 },
];
let total = 0;
for (const line of basket) {
total += line.price;
}
console.log("Total:", total); // Total: 39I valori dentro un oggetto possono essere qualsiasi cosa, anche array e altri oggetti. const user = { name: "Ana", tags: ["admin", "editor"] }; ti permette di scrivere user.tags[0] per arrivare ad "admin". Leggi queste catene da sinistra a destra: parti da user, vai alla sua proprietà tags, poi prendi l'indice 0.
I metodi e le chiavi di un oggetto
Una proprietà il cui valore è una funzione si chiama metodo. Hai sempre chiamato metodi: console.log è il metodo log dell'oggetto console, e Math.round è il metodo round di Math. Dentro un metodo, la parola chiave this indica l'oggetto su cui il metodo è stato chiamato, così un metodo può leggere le proprietà del proprio oggetto. Infine, Object.keys(pet) dà un array delle chiavi, qui ["name", "kind", "age"], utile per scorrere tutte le proprietà con un ciclo.
const counter = {
count: 0,
add() {
this.count++;
},
};
counter.add();
counter.add();
console.log(counter.count); // 2Esempio svolto. Un record di un libro { title: "Notes", pages: 120, read: 45 } può indicare l'avanzamento con Math.round(book.read / book.pages * 100), che dà 38, cioè il 38 per cento. Chiamare i valori pages e read rende la formula leggibile in un modo in cui b[1] / b[0] non lo sarebbe mai.
Array o oggetto?
Un test veloce decide quale usare. Se i valori sono cose dello stesso tipo e il loro ordine conta, come i punteggi di una classe o i passaggi di una ricetta, usa un array e raggiungili per posizione. Se i valori sono informazioni diverse su una stessa cosa, come il nome, il prezzo e la giacenza di un prodotto, usa un oggetto e raggiungili per nome. La maggior parte dei dati reali mescola le due cose: un array di prodotti, in cui ogni prodotto è un oggetto. Quando stampi un oggetto nel riquadro di esercizio lo vedi in forma compatta, come {"name":"Coco","age":3}; leggere le singole proprietà dà un output più pulito.
| oggetto | Un gruppo di valori con un nome fra { } |
| proprietà | Una coppia chiave: valore in un oggetto |
| chiave | Il nome di una proprietà, come age |
| notazione con il punto | pet.name |
| notazione con le parentesi quadre | pet["name"] oppure pet[field] |
| metodo | Una proprietà il cui valore è una funzione |
| this | Dentro un metodo, l'oggetto su cui è stato chiamato |
| Object.keys | Un array con le chiavi di un oggetto |
- Che cosa stampa?
const car = { brand: "Kia", year: 2020 }; console.log(car.year); - Che cosa stampa?
const car = { brand: "Kia", year: 2020 }; console.log(car["brand"]); - Che cosa stampa?
const car = { brand: "Kia" }; console.log(typeof car.color);- undefined
- Un errore
- string
- Che cosa stampa?
const box = { w: 4, h: 5 }; box.w = 6; console.log(box.w * box.h); - Che cosa stampa?
const p = { name: "Lee" }; p.age = 40; console.log(Object.keys(p).length); - Che cosa stampa?
const field = "score"; const r = { score: 88 }; console.log(r[field]); - Che cosa stampa?
const u = { name: "Ana", tags: ["admin", "editor"] }; console.log(u.tags[1]); - Che cosa stampa?
const items = [{ n: 2 }, { n: 5 }, { n: 1 }]; let t = 0; for (const it of items) { t += it.n; } console.log(t); - Che cosa stampa?
const c = { count: 5, add() { this.count++; }, }; c.add(); console.log(c.count); - Quale riga aggiunge all'oggetto item una proprietà chiamata price con valore 9?
item.price = 9;item = price: 9;item.push(price, 9);
- Gli oggetti contengono proprietà chiave: valore fra { }.
- Si leggono con obj.key oppure obj["key"]; le parentesi quadre servono per le chiavi in una variabile.
- Assegna un valore per cambiare o aggiungere una proprietà; le chiavi mancanti si leggono come undefined.
- Gli array di oggetti contengono record; scorrili con un ciclo e leggi ogni proprietà.
- Un metodo è una proprietà che contiene una funzione; this è il suo oggetto.
Fonti di questo corso (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
Consultato il: 2026-10-17