Skinnysite.net

... un modo di esprimersi.

Font Size

Cpanel

Homa Page di Daniele Franceschini

Qualche informazione sul metodo toString()

Valutazione attuale:  / 1
ScarsoOttimo 

Un altro interessante metodo predefinito dell'oggetto Object è toString().

Lo scopo di questo metodo e quello di restituire infomazioni interne all'oggetto, generalmente il tipo di dato e: "[Object classe]".

La classe può essere uno dei tipi predefiniti tipo "Object", "Array", "Function".

Quando realiziamo una funzione che rappresenta una classe è utile ridefinire questo metodo, che viene ereditato da Object, al fine di restituire informazioni relative alla nostra classe.

Attraverso questo metodo le istanze della nostra classe possono essere convertite in stringhe, infatti quando si concatena un oggetto ad una stringa, il motodo toString() viene richiamato implicitamente. Eccovi un esempio:

//creo un oggetto vuoto
function myObject(){
}
//Ne faccio una istanza
var obj = new myObject();
//concateno l'istanza con una stringa
alert("cosa è obj ?" + obj);

Come dicevo prima, tutto funziona perché viene richiamato il metodo toString() definito nell'oggetto base "Object". Tutti gli oggetti ereditano da "Object", pertanto dove non arriva il figlio potrebbe arrivare il padre. Sembra molto attuale questa similitudine!

Proviamo a ridefinere il metodo toString()

//creo un oggetto vuoto
function myObject(){
}
//Ne faccio una istanza
var obj = new myObject();
//concateno l'istanza con una stringa
alert("cosa è obj ?" + obj);
//Definisco un mio metodo toString() sulla "classe"
myObject.prototype.toString = function() {
return "[Object myObject]";
}
//Adesso il risultato della concatenazione mostra un messaggio più
//pertinente e meno generico. Come si può vedere il metodo toString()
//viene sempre chiamato implicitamente.
alert("cosa è obj ?" + obj);
//tuttavia niente vieta di scrivere:
alert("cosa è obj ?" + obj.toString());

Infine ammettiamo che per qualche ragione, ad esempio per motivi di debug, volessimo richiamre il metodo toString() dell'oggetto base, come possiamo fare visto che lo abbiamo ridefinito? Così:

//creo un oggetto vuoto
function myObject(){
}
//Ne faccio una istanza
var obj = new myObject();
//concateno l'istanza con una stringa
alert("cosa è obj ?" + obj);
//Definisco un mio metodo toString() sulla "classe"
myObject.prototype.toString = function() {
return "[Object myObject]";
}
//Adesso il risultato della concatenazione mostra un messaggio più
//pertinente e meno generico. Come si può vedere il metodo toString()
//viene sempre chiamato implicitamente.
alert("cosa è obj ?" + obj);
//tuttavia niente vieta di scrivere:
alert("cosa è obj ?" + obj.toString());
//richiamo il metodo dell'oggetto base
alert(Object.prototype.toString.apply(obj));

Sei qui: Home Code Snippets Javascript Qualche informazione sul metodo toString()