Middle
De ce este posibil să accesezi un șir primitiv în JavaScript ca și cum ar fi un obiect?
sobes.tech AI
Răspuns de la AI
În JavaScript, atunci când se accesează un șir primitiv string (nu String), are loc o conversie automată (boxing/ambalare) într-un obiect String. Acesta este un obiect temporar care conține metode și proprietăți accesibile pentru șiruri (de exemplu, .length, .toUpperCase(), .indexOf()). După efectuarea operației asupra acestui obiect temporar, acesta este distrus.
De exemplu:
// șir primitiv
const myString = "hello";
// Accesarea proprietății .length pe șirul primitiv
// Are loc o ambalare automată într-un obiect String { "hello" }
// Apoi, se apelează proprietatea .length pe acest obiect temporar
console.log(myString.length); // 5
// Accesarea metodei .toUpperCase() pe șirul primitiv
// Are loc o ambalare automată într-un obiect String { "hello" }
// Apoi, se apelează metoda .toUpperCase() pe acest obiect temporar
console.log(myString.toUpperCase()); // "HELLO"
// După efectuarea operației, obiectul temporar este distrus.
// myString rămâne un șir primitiv.
console.log(typeof myString); // "string"
Acest comportament facilitează lucrul cu tipurile primitive, permițând utilizarea sintaxei orientate pe obiect pentru accesarea funcționalității lor, fără a fi nevoie de crearea explicită a obiectelor de ambalare.
Compararea unui șir primitiv și a unui obiect String:
| Caracteristică | Șir primitiv ("string") |
Obiect String (new String("string")) |
|---|---|---|
| Tip | string |
object |
Comparare cu === |
Pe valoare | Pe referință |
| În general | Mai performant | Mai puțin performant |
| Utilizare | Preferat | Evitat, dacă nu este necesar explicit |