Categorie
Javascript Programmazione

{JS} Tipi primitivi, new Object (Global Object)

Tipi primitivi e oggetti

I tipi di dati primitivi, stringnumberbigintbooleansymbolnull e undefined sono valori di tipo primario, contengono un singolo valore, sono più veloci e più leggeri. Javascript ci consente di accedere alle proprietà e ai metodi dei relativi oggetti. Quando questo accade, viene creato provvisoriamente uno speciale “oggetto contenitore” che fornisce le funzionalità extra, successivamente questo verrà distrutto.

Un oggetto, è in grado di memorizzare molti valori come proprietà e possono essere utilizzati per memorizzare funzioni al loro interno.
Gli oggetti sono più “pesanti” dei tipi primitivi.

Passaggio di valori

Esiste una sottile differenza tra tipi di dati primitivi ed oggetti.

var x = 10;
var y = x;
y = y + 1;

L’operazione effettuata su y, non ha influito sul valore della variabile x seppur nella dichiarazione della variabile y essa si è definita uguale a x.

Gli oggetti sono strutture complesse e l’assegnamento di un oggetto ad una variabile non fa in modo che la variabile contenga effettivamente l’oggetto. Essa contiene in realtà un riferimento all’oggetto.

var oggetto = {nome: "Mario", cognome: "Rossi"};
var altroOggetto = oggetto;
altroOggetto.nome = "Giuseppe";

In questo caso se proviamo ad accedere alla proprietà nome dell’oggetto oggetto scopriremo che anch’essa ha ora il valore Giuseppe pertanto ogni modifica effettuata alla variabile oggetto si riflette anche sulla variabile altroOggetto.

Il motivo è abbastanza semplice, in termini tecnici,  il passaggio di valori relativi a tipi di dato primitivi avviene sempre per valore mentre il passaggio di oggetti avviene sempre per riferimento.

Object literal

Finora, abbiamo definito gli oggetti con quella che viene definita notazione letterale “Object literal

var oggetto = { };  

new Object

E’ importante sapere che esiste una forma equivalente

var oggetto = new Object({ });  

che inizialmente potrà non mostrare grandi vantaggi ma vedremo l’utilità affrontano il concetto di “Object Costructor

/* OBJECT LITERAL */

var oggetto = {
nome : "Mario"
cognome : "Rossi"
};

/* OBJECT COSTRUCTOR */

var oggetto = new Object({
nome : "Mario",
cognome : "Rossi"
});

Global Object

Ogni oggetto è costruito su Object, questo fa sì che tutti gli oggetti JavaScript abbiano alcuni metodi e caratteristiche comuni.

Vedremo più avanti che JavaScript ci mette a disposizione diversi oggetti predefiniti, sempre basati su Object, che risultano molto comodi per le più comuni attività di programmazione.

L’oggetto Object è anche in grado di generare istanze di oggetti

var numero      = new Object(12);
var altroNumero = new Object(5*2);
var stringa     = new Object("Testo");

Il risultato non sarà un semplice valore numerico o un valore di tipo stringa, ma oggetti specializzati nella manipolazione di valori numerici e stringhe.
Per ogni tipo di dato primitivo (tranne null e undefined) esiste un corrispondente oggetto specializzato che mette a disposizione del programmatore specifiche proprietà e metodi

Metodi di Object

Dal momento che tutti gli oggetti JavaScript sono basati su Object, essi condividono alcuni metodi

toString() 

Il primo metodo restituisce una versione in stringa dell’oggetto

var oggetto = new Object(1);

var y = oggetto.toString();   //restituisce "15" valore di tipo stringa 
document.write(y);           

Nel caso di oggetto non riconducibile ad un tipo di dato primitivo sarà restituita la stringa [object Object]

 valueOf()

Il metodo valueOf() restituisce il corrispondente valore del tipo di dato primitivo associato all’oggetto

var oggetto = new Object(1);

var y = oggetto.valueOf();   //restituisce "15" valore di tipo numerico 
document.write(y);  

Lascia un commento

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