Nu fiți atenționați de faptul că literalurile de tip șir, număr și literă booleană pot fi tratate ca un obiect cu proprietăți (de ex., true.toString ()
). Atunci când aceste valori primitive sunt tratate ca obiecte prin încercarea de a accesa proprietățile acestora, JavaScript va crea un obiect înfășurat din constructorul asociat primitivului, astfel încât proprietățile și metodele obiectului wrapper să poată fi accesate.
Odată ce proprietățile au fost accesate, obiectul de împachetare este aruncat. Această conversie ne permite să scriem un cod care ar face să pară ca o valoare primitivă să fie, de fapt, un obiect. Adevărul este spus, atunci când este tratat ca un obiect în cod, JavaScript îl va converti într-un obiect, astfel încât proprietatea va funcționa și apoi va converti înapoi la o valoare primitivă odată ce o valoare va fi returnată. Lucrul cheie pe care trebuie să-l observați aici este ceea ce se întâmplă și că JavaScript vă face asta în spatele scenei.
Iată câteva exemple care demonstrează despre ce vorbesc:
Eșantion de șir: sample56.html
Exemplu de număr: sample57.html
Exemplu boolean: sample58.html
Atunci când accesați direct o proprietate pe un număr primitiv (nu este stocată într-o variabilă), trebuie să evaluați mai întâi numărul înainte ca valoarea să fie tratată ca un obiect (de ex.., (1) .toString ();
sau 1 ... toString ();
). De ce două puncte? Primul punct este considerat ca zecimal numeric, nu ca operator pentru accesarea proprietăților obiectului.
Valorile literale / primitive care reprezintă un șir, un număr sau o logică booleană sunt mai rapide pentru scriere și sunt mai concise în forma literală.
Ar trebui să folosiți valoarea literală din acest motiv. În plus, precizia tip de
operatorul depinde de modul în care creați valoarea (invocarea literală versus constructorul). Dacă creați un șir, un număr sau un obiect Boolean, tip de
operatorul raportează tipul ca obiect. Dacă utilizați literali, tip de
operatorul returnează un nume de șir al tipului de valoare reală (de ex., typeof 'foo' // returnează 'string'
).
Am demonstrat acest lucru în următorul cod.
Mostră: sample59.html
Dacă programul dvs. depinde de tip de
operator pentru a identifica valorile string, număr sau boolean în termenii acelor tipuri primitive, ar trebui să evitați Şir
, Număr
, și boolean
constructori.