Middle
Kāpēc JavaScript ir iespējams piekļūt primitivajam virknes tipam kā pie objekta?
sobes.tech AI
Atbilde no AI
JavaScript, pie pieejas pie primārās virknes string (ne String) notiek automātiska pārvēršana (boksēšana/iepakošana) uz String objektu. Šis ir pagaidu objekts, kas satur pieejamus virknes metodes un īpašības (piemēram, .length, .toUpperCase(), .indexOf()). Pēc darbības ar šo pagaidu objektu tas tiek iznīcināts.
Piemērs:
// primārā virkne
const myString = "hello";
// piekļuve `.length` īpašībai
// automātiska iepakošana `String { "hello" }` objektā
// tad tiek izsaukta šī pagaidu objekta `.length` īpašība
console.log(myString.length); // 5
// piekļuve `.toUpperCase()` metodei
// automātiska iepakošana `String { "hello" }` objektā
// tad tiek izsaukta šī pagaidu objekta `.toUpperCase()` metode
console.log(myString.toUpperCase()); // "HELLO"
// Darbības beigās pagaidu objekts tiek iznīcināts.
// myString paliek primārā virkne.
console.log(typeof myString); // "string"
Šāda uzvedība nodrošina ērtu darbu ar primārajiem tipiem, ļaujot izmantot objektorientētu sintaksi to funkcionalitātes piekļuvei, neprasot skaidru objektu izveidi.
Salīdzinājums starp primāro virkni un String objektu:
| Īpašība | Primārā virkne ("string") |
String objekts (new String("string")) |
|---|---|---|
| Tips | string |
object |
Salīdzināšana ar === |
Saskaņā ar vērtību | Saskaņā ar atsauci |
| Kopējais | Augstāka veiktspēja | Zemāka veiktspēja |
| Lietošana | Biežāk ieteicama | Vairāk jāizvairās, ja nav nepieciešama |