DEFINIZIONE DI OGGETTO
In JavaScript, gli oggetti sono importanti. Se capisci gli oggetti, capisci JavaScript. In questo linguaggio, quasi “tutto” è un oggetto.
- I booleani possono essere oggetti (se definiti con la parola chiave new)
- I numeri possono essere oggetti (se definiti con la parola chiave new)
- Le stringhe possono essere oggetti (se definite con la parola chiave new)
- Le date sono sempre oggetti
- Math è un oggetto
- Le espressioni regolari sono sempre oggetti
- Gli array sono sempre oggetti
- Le funzioni sono sempre oggetti
- Gli oggetti sono sempre oggetti
Tutti i valori JavaScript, eccetto i valori primitivi, sono oggetti.
VALORI PRIMITIVI
Un valore primitivo è un valore che non ha proprietà o metodi. 3.14 è un valore primitivo. Un tipo di dati primitivo è un dato che ha un valore primitivo.
JavaScript definisce 7 tipi di tipi di dati primitivi:
- string
- number
- boolean
- null
- undefined
- symbol
- bigint
I valori primitivi sono immutabili (sono codificati e non possono essere modificati). Se x = 3.14, puoi cambiare il valore di x, ma non puoi cambiare il valore di 3.14.
GLI OGGETTI SONO VARIABILI
Le variabili JavaScript possono contenere valori singoli:
let person = “John Doe”;
Gli oggetti sono variabili. Ma gli oggetti possono contenere molti valori. I valori sono scritti come coppie chiave valore (chiave e valore separati da due punti).
let person = {firstName:“John”, lastName:“Doe”, age:50, eyeColor:“blue”};
Un oggetto JavaScript è una raccolta di valori. È pratica comune dichiarare oggetti con la parola chiave const.
const person = {firstName:“John”, lastName:“Doe”, age:50, eyeColor:“blue”};
PROPRIETA’ DEGLI OGGETTI
I nomi dei valori (chiavi), negli oggetti JavaScript, sono chiamati proprietà.
METODI DEGLI OGGETTI
I metodi sono azioni che possono essere eseguite sugli oggetti. Le proprietà degli oggetti possono essere sia valori primitivi che altri oggetti e funzioni. Un metodo oggetto è una proprietà dell’oggetto contenente una definizione di funzione come fullName.
Gli oggetti JavaScript sono contenitori di nomi di valori, chiamati proprietà e metodi.
CREAZIONE DI OGGETTI JAVASCRIPT
Con JavaScript, puoi definire e creare i tuoi oggetti. Esistono diversi modi per creare nuovi oggetti:
- Crea un singolo oggetto, usando un oggetto letterale.
- Crea un unico oggetto, con la parola chiave new.
- Definire un costruttore di oggetti, quindi creare oggetti del tipo costruito.
- Crea un oggetto usando Object.create().
USARE UN OGGETTO LETTERALE
Questo è il modo più semplice per creare un oggetto JavaScript. Usando un oggetto letterale, definisci e crei un oggetto in un’unica istruzione. Tale oggetto è un elenco di coppie chiave:valore (come age:50) racchiuse tra parentesi graffe {}.
L’esempio seguente crea un nuovo oggetto JavaScript con quattro proprietà:
const person = {firstName:“John”, lastName:“Doe”, age:50, eyeColor:“blue”};
Gli spazi e le interruzioni di riga non sono importanti. Una definizione di oggetto può estendersi su più righe:
const person = {
firstName: “John”,
lastName: “Doe”,
age: 50,
eyeColor: “blue”
};
oppure:
const person = {};
person.firstName = “John”;
person.lastName = “Doe”;
person.age = 50;
person.eyeColor = “blue”;
KEYWORD NEW
L’esempio seguente crea un nuovo oggetto JavaScript utilizzando new Object(), quindi aggiunge 4 proprietà:
const person = new Object();
person.firstName = “John”;
person.lastName = “Doe”;
person.age = 50;
person.eyeColor = “blue”;
Gli esempi sopra fanno esattamente lo stesso. Ma non è necessario utilizzare new Object(). Per leggibilità, semplicità e velocità di esecuzione, utilizzare il metodo letterale dell’oggetto.
GLI OGGETTI JAVASCRIPT SONO MUTABILI
Gli oggetti sono mutabili: sono indirizzati per riferimento, non per valore. Se person è un oggetto, la seguente istruzione non creerà una copia di person:
const x = person; // Will not create a copy of person.
L’oggetto x non è una copia di person. È person. Sia x che person sono lo stesso oggetto. Qualsiasi modifica a x cambierà anche person, perché x e person sono lo stesso oggetto.
const person = {
firstName:“John”,
lastName:“Doe”,
age:50, eyeColor:“blue”
}
const x = person;
x.age = 10; // Will change both x.age and person.age
APPROFONDIMENTO AI
In JavaScript, gli oggetti sono una delle caratteristiche principali e più potenti del linguaggio. Un oggetto in JavaScript è una struttura che consente di raggruppare e organizzare dati e funzionalità correlate. Gli oggetti sono composti da coppie chiave-valore (dette anche proprietà), dove le chiavi sono stringhe (o simboli) e i valori possono essere di qualsiasi tipo: numeri, stringhe, funzioni, altri oggetti, ecc.
1. Creazione di un oggetto
Esistono diversi modi per creare oggetti in JavaScript:
•Oggetto letterale: Questo è il modo più semplice e più comunemente utilizzato per creare un oggetto.
let persona = {
nome: “Mario“,
cognome: “Rossi“,
età: 30,
saluta: function() {
console.log(“Ciao, sono Mario!“);
}
};
In questo esempio, l’oggetto persona ha quattro proprietà: nome, cognome, età e una funzione saluta.
•Oggetto attraverso il costruttore Object(): È possibile creare un oggetto utilizzando il costruttore Object().
let auto = new Object();
auto.marca = “Fiat“;
auto.modello = “500“;
auto.anno = 2020;
2. Accesso e modifica delle proprietà
Le proprietà di un oggetto possono essere accessibili e modificate in due modi:
•Notazione con il punto:
console.log(persona.nome); // “Mario”
persona.età = 31;
•Notazione con parentesi quadre: Questo metodo è utile quando il nome della proprietà è dinamico o contiene caratteri non validi per la notazione a punto.
console.log(persona[“cognome”]); // “Rossi”
persona[“età”] = 32;
3. Metodi di un oggetto
Un metodo è una funzione che è una proprietà di un oggetto. Nell’oggetto persona sopra, saluta è un metodo.
persona.saluta(); // Output: “Ciao, sono Mario!”
4. Proprietà e metodi speciali degli oggetti
•this: Dentro un metodo, this fa riferimento all’oggetto attuale. Questo è utile quando si lavora con più proprietà all’interno di un metodo.
let persona = {
nome: “Mario“,
saluta: function() {
console.log(“Ciao, sono ” + this.nome);
}
};
persona.saluta(); // “Ciao, sono Mario”
•Object.keys(): Restituisce un array contenente tutte le chiavi (proprietà) di un oggetto.
console.log(Object.keys(persona)); // [“nome”, “saluta”]
•Object.values(): Restituisce un array contenente tutti i valori delle proprietà di un oggetto.
console.log(Object.values(persona)); // [“Mario”, function saluta() {…}]
•Object.assign(): È un metodo usato per copiare i valori di tutte le proprietà di uno o più oggetti sorgente in un oggetto di destinazione.
let target = {};
let source = { a: 1, b: 2 };
Object.assign(target, source);
console.log(target); // { a: 1, b: 2 }
5. Prototipi
In JavaScript, ogni oggetto ha un oggetto prototipo da cui eredita proprietà e metodi. Questo meccanismo di ereditarietà è alla base del concetto di OOP (programmazione orientata agli oggetti) in JavaScript. L’oggetto prototipo può essere esteso aggiungendo metodi o proprietà che verranno condivisi tra tutti gli oggetti che lo ereditano.
function Persona(nome, età) {
this.nome = nome;
this.età = età;
}
Persona.prototype.saluta = function() {
console.log(“Ciao, sono ” + this.nome);
};
let persona1 = new Persona(“Luigi“, 25);
persona1.saluta(); // “Ciao, sono Luigi”
In questo esempio, il metodo saluta viene aggiunto al prototipo della funzione costruttore Persona, il che significa che tutte le istanze create tramite new Persona erediteranno questo metodo.
7. Oggetti come contenitori di dati dinamici
Gli oggetti in JavaScript possono essere usati anche come contenitori di dati dinamici, rendendo possibile aggiungere o rimuovere proprietà in qualsiasi momento.
let libro = {};
libro.titolo = “Il Signore degli Anelli“;
libro.autore = “J.R.R. Tolkien“;
delete libro.autore;
In questo esempio, abbiamo creato l’oggetto libro, aggiunto delle proprietà e poi rimosso una proprietà con delete.
8. Oggetti e JSON
Un formato molto usato per la rappresentazione e trasmissione di oggetti in JavaScript è il JSON (JavaScript Object Notation). Questo formato è particolarmente utile per lo scambio di dati tra server e client.
•Conversione da oggetto a JSON:
let persona = {
nome: “Mario“,
età: 30
};
let json = JSON.stringify(persona);
console.log(json); // ‘{“nome”:”Mario”,”età”:30}’
•Conversione da JSON a oggetto:
let json = ‘{“nome”:”Mario”,”età“:30}’;
let persona = JSON.parse(json);
console.log(persona.nome); // “Mario”
9. Concetti di base sugli oggetti
•Proprietà enumerabili: Le proprietà di un oggetto possono essere enumerate attraverso cicli for…in o metodi come Object.keys().
•Oggetti come riferimenti: In JavaScript, gli oggetti sono passati per riferimento, non per valore. Modificare una proprietà di un oggetto passato come argomento a una funzione modificherà direttamente l’oggetto originale.
let persona1 = { nome: “Mario” };
let persona2 = persona1;
persona2.nome = “Luigi“;
console.log(persona1.nome); // “Luigi”
Conclusione
Gli oggetti sono una parte fondamentale di JavaScript e sono estremamente flessibili e potenti. Comprendere come crearli, modificarli e usarli è essenziale per sviluppare applicazioni JavaScript efficaci.
Scrivi un commento