Categorie
Javascript Programmazione

{JS} Oggetti, proprietà, metodi e this

Cos’è un oggetto?

Un oggetto é un’entità che possiede determinate caratteristiche; Essa contiene dati che prendono il nome di proprietàfunzionalità che prendono il nome di metodi.
Normalmente un oggetto è utilizzato per rappresentare un’entità specifica come ad esempio una persona, un ordine, una fattura, una prenotazione

Rappresentiamo un oggetto racchiudendo tra parentesi graffe al cui interno inseriremo le sue proprietà e i suoi metodi.

Definizione di un oggetto

Rappresentiamo un oggetto racchiudendo tra parentesi graffe al cui interno inseriremo le sue proprietà e i suoi metodi.
Le proprietà ed i metodi sono indicato mediante l’utilizzo della coppia nome/valore, separati dalla “,” mentre l’assegnamento è indicato mediante “:”

var nuovoOggetto = {
nome: "Mario",
cognome: "Rossi",
email: "mario.rossi@gmail.com"
}

/* E' possibile scrivere una oggetto su un unica riga */

var nuovoOggetto = { nome: "Mario", cognome: "Rossi", email: "mario.rossi@gmail.com" }

Oggetto vuoto

E’ possibile dichiarare un oggetto vuoto e provvedere solo successivamente ad inserire al suo interno proprietà e metodi.

var nuovoOggetto = { }

Oggetti annidati

Una proprietà può assumere qualsiasi valore derivante da un’espressione JavaScript, compreso un altro oggetto. Quindi possiamo creare oggetti annidati.

var persona = {
	nome: "Mario",
	cognome: "Rossi",
/* Dichiarazione di nuovo oggetto annidato */
	indirizzo: {
		via: "Via Garibaldi",
		numero: 15,
		CAP: "00100",
		citta: "Roma"
	}
};

Proprietà

Per i nomi delle proprietà di un oggetto non abbiamo le restrizioni dei nomi delle variabili o meglio attraverso l’utilizzo dei doppi apici, intorno al nome della proprietà, sarà possibile ignorare tali regole.

var nuovoOggetto = {
"nome-proprità": "valore",
nomeproprieta: "valore"
}

Accedere alle proprietà

Per richiamare un proprietà contenuta all’interno di un oggetto utilizzeremo la seguente sintassi:

NOME-OGGETTO . NOME-PROPRIETA

/ Dichiarazione di un oggetto e delle sue proprietà */
var persona = {
	nome: "Mario",
	cognome: "Rossi"
}
/ Richiamare valore di una proprietà contenuta nell'oggetto */
var catturaValore = persona.nome;
Altra sintassi d’accesso

NOME-OGGETTO [ ” NOME-PROPRIETA’ ” ]

/ Dichiarazione di un oggetto e delle sue proprietà */
var persona = {
	nome: "Mario",
	cognome: "Rossi"
}
/ Richiamare valore di una proprietà contenuta nell'oggetto */
var catturaValore = persona["nome"];

Questo approccio è obbligatorio quando il nome della proprietà non segue le regole per i nomi delle variabili

Note: Il tentativo di accedere ad una proprietà non definita in un oggetto non genera un errore, ma restituisce il valore undefined

Creazione/aggioramento di una proprietà

Gli oggetti in Javascript sono entità dinamiche dal carattere molto flessibile infatti se proviamo ad assegnare un valore ad una proprietà non ancora definita creeremo di fatto una nuova proprietà inizializzandola con il valore assegnato (questo processo è chiamato “Creazione per definizione”).
Allo stesso modo se la proprietà ha già un valore ridefinendola sarà sovrascritta/aggironata.

/ Dichiarazione di un oggetto e delle sue proprietà */
var persona = {
	nome: "Mario",
	cognome: "Rossi"
}

persona.eta=35;

/* La proprietà "eta" sarà aggiunta all' oggetto "persona" */

Eliminazione di una proprietà

Attraverso la keyword “delete” è possibile eliminare una proprietà.

delete persona.cognome;

Dopo l’eliminazione della proprietà , ogni tentativo di accedervi restituirà il valore undefined.

Verificare esistenza di una proprietà

Per verificare se un oggetto possiede o meno una specifica proprietà possiamo utilizzare l’operatore “in” che accetta due argomenti operandi.
Il risultato, che verrà memorizzato nella variabile “verificaEsistenza” sarà un valore booleano.

var verificaEsistenza = "nome" in persona;

Metodi

I metodi rappresentano attività che un oggetto può compiere. Da un punto di vista sintattico, la definizione di un metodo per un oggetto è abbastanza simile alla definizione di una proprietà.
Più semplicemente un metodo è la proprietà di un oggetto che contiene una funzione.

Creazione di un metodo

/* Definizione di un funzione */
function nuovaFunione() { 
return "Mario Rossi";
} 

/* Definizione di un oggetto con alcune proprietà */
var nuovoOggetto = {
"nome":"Mario",
"cognome":"Rossi
}

/*Creazione di una nuova proprietà con all'interno una funzione,
abbiamo quindi creato un metodo */
nuovoOggetto.primoMetodo=nuovaFunzione;

Note:  Da notare che non assegniamo alla proprietà il risultato della chiamata alla funzione, ma la funzione stessa.

Richiamare un metodo

var variabileContenitrice=nuovoOggetto.primoMetodo();

La proprietà “primoMetodo” dal momento che contiene una funzione, è di fatto un metodo.
Per eseguirlo dobbiamo far riferimento ad esso specificando le parentesi tonde come in una chiamata di funzione.
Di conseguenza un metodo può prevedere degli argomenti come avviene per una normale funzione.

Definire una funzione al momento dell’assegnamento

nuovoOggetto.secondoMetodo = function nuovaFunzione() {
return "Risultato della funzione";
}

In questo modo definiamo la funzione direttamente nell’assegnamento alla proprietà

this

Abbiamo già detto che gli oggetti in JavaScript sono entità dinamiche, nel senso che la loro struttura è molto flessibile e può essere modificata (“dinamicamente”) anche durante l’esecuzione di uno script.
Durante l’esecuzione dello script potremmo aver cambiato il valore di alcune proprietà dell’oggetto, this ci viene in soccorso e ci fornisce la possibilità di avere un modo per visualizzare il valore corrente di queste proprietà.

La parola chiave, “this”, rappresenta l’oggetto a cui appartiene il metodo invocato.

var oggettoPersona = {
nome : "Mario",
cognome :"Rossi"
}

oggettoPersona.creazioneMetodo = function () { 
return this.nome + " " + this.cognome; 
}

Ci garantisce la visualizzazione dei dati correnti al momento della chiamata.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *