Gli oggetti stringa in javascript
Nel linguaggio javascript le stringhe possono essere usate sia come dati primitivi e sia come oggetti.
Gli oggetti stringa sono detti oggetti String.
Un esempio pratico
Per spiegare la differenza tra le stringhe e gli oggetti String ricorro a un esempio pratico.
Quando digito
var myVar = "Questa è una stringa";
Javascript considera la variabile stringa come un dato primitivo, come i numeri o i valori booleani.
Se invece digito
var myVar = new String("Questa stringa è un oggetto");
Javascript considera la variabile stringa come un oggetto String.
Quando la stringa è trattata come un oggetto posso usare i vari metodi predefiniti per gli oggetti String.
Nota. In particolar modo sono molto utili i metodi che permettono di usare le espressioni regolari (RegExp) negli oggetti stringa.
Ad esempio, il metodo length mi permette di conoscere rapidamente il numero di caratteri della stringa
var myVar = new String("Questa stringa è un oggetto");
var numCaratteri = myVar.length;
document.write(numCaratteri);
In questo caso la stringa ha 27 caratteri
27
Posso usare i metodi se la stringa è un dato primitivo?
Fortunatamente il linguaggio permette l'utilizzo dei metodi anche se la stringa non è stata dichiarata come un oggetto.
In questi casi Javascript converte temporaneamente la stringa in un oggetto String ed esegue il metodo.
Una volta restituita l'informazione la stringa torna a essere un dato primitivo.
Esempio
Ad esempio, in questo codice la variabile stringa è un dato primitivo.
var myVar = "Questa è una stringa";
var numCaratteri = myVar.length;
document.write(numCaratteri);
Tuttavia, il metodo length funziona lo stesso e mi restituisce la lunghezza della stringa
20
I metodi degli oggetti String
Alcuni metodi usati negli oggetti String
- charAt
estrae un carattere dalla stringa - charCodeAt
estrae il codice ASCII/Unicode di un carattere della stringa - indexOf
cerca la posizione della prima occorrenza nella stringa - lastIndexOf
cerca la posizione dell'ultima occorrenza nella stringa - length
restituisce il numero dei caratteri della stringa - substr
estrae una sottostringa da una posizione a un'altra in una stringa - substring
estrae una sottostringa di lunghezza n a partire da una posizione - toLowerCase
trasforma il testo in minuscolo - toUpperCase
trasforma il testo in maiuscolo
Osservazioni
Alcune osservazioni utili sugli oggetti String
- Quando confronto una stringa primitiva con un oggetto stringa Javascript confronta automaticamente i loro valori testuali.
Ad esempio, in questo confronto javascript restituisce in output "sono uguali" anche se myVar è un dato primitivo e myVar2 è un oggetto String.
var myVar = "Questa è una stringa";
Output
var myVar2 = new String("Questa è una stringa");
if (myVar==myVar2) {
document.write("Sono uguali");
} else {
document.write("Non sono uguali");
}Sono uguali
- Quando confronto due oggetti String, javascript confronta i riferimenti agli oggetti e non i valori testuali effettivi.
Ad esempio, in questo confronto javascript restituisce in output "non sono uguali" perché, pur avendo lo stesso testo, i due oggetti myVar e myVar2 hanno riferimenti diversi nella memoria del computer.
var myVar = new String("Questa è una stringa");
Output
var myVar2 = new String("Questa è una stringa");
if (myVar==myVar2) {
document.write("Sono uguali");
} else {
document.write("Non sono uguali");
}Non sono uguali
E così via.