Middle
Zašto je u JavaScript-u moguće pristupiti primitivnom nizu kao da je objekat?
sobes.tech АИ
Одговор од АИ
U JavaScript-u, kada pristupate primitivnom nizu string (ne String), dolazi do automatske konverzije (boxing/omotavanje) u objekat String. Ovo je privremeni objekat koji sadrži metode i svojstva dostupna za nizove (npr. .length, .toUpperCase(), .indexOf()). Nakon izvršenja operacije nad ovim privremenim objektom, on se uništava.
Na primer:
// primitivni niz
const myString = "hello";
// Pristup svojstvu .length na primitivnom nizu
// Automatski se obavija u objekat String { "hello" }
// Zatim se poziva svojstvo .length na ovom privremenom objektu
console.log(myString.length); // 5
// Pristup metodu .toUpperCase() na primitivnom nizu
// Automatski se obavija u objekat String { "hello" }
// Zatim se poziva metoda .toUpperCase() na ovom privremenom objektu
console.log(myString.toUpperCase()); // "HELLO"
// Nakon izvršenja operacije, privremeni objekat se uništava.
// myString ostaje primitivni niz.
console.log(typeof myString); // "string"
Ovo ponašanje olakšava rad sa primitivnim tipovima, omogućavajući korišćenje objektno-orijentisanog sintaksa za pristup njihovoj funkcionalnosti, bez potrebe za eksplicitnim kreiranjem objekata-omotaca.
Poređenje primitivnog niza i objekta String:
| Karakteristika | Primitivni niz ("string") |
Objekat String (new String("string")) |
|---|---|---|
| Tip | string |
object |
Poređenje sa === |
Po vrednosti | Po referenci |
| Opšte | Efikasnije | Manje efikasno |
| Upotreba | Preporučljivo | Izbegavati, osim ako je eksplicitno potrebno |