Sobes.tech
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