Posso aggiungere una proprietà ad una stringa?
importanza: 5
Considerate il seguente codice:
let str = "Hello";
str.test = 5;
alert(str.test);
Cosa ne pensate, potrebbe funzionare? Cosa verrebbe mostrato?
Provate ad eseguirlo:
let str = "Hello";
str.test = 5; // (*)
alert(str.test);
Potremmo ottenere due diversi risultati:
undefined- Un errore (strict mode).
Perché? Proviamo ad esaminare cosa succede alla riga (*):
- Quando si prova ad accedere ad una proprietà di
str, viene creato un âoggetto contenitoreâ. - Lâoperazione di accesso viene eseguito su questo. Quindi lâoggetto ottiene la proprietÃ
test. - Lâoperazione termina e âlâoggetto contenitoreâ viene distrutto.
Quindi, nellâultima riga di codice, str non possiede alcuna traccia di quella proprietà . Viene creato un nuovo oggetto per ogni operazione su un tipo stringa.
Questo esempio mostra chiaramente che le variabili primitive non sono oggetti.
Le variabili di tipo primitivo infatti non possono memorizzare dati.