Laat je niet in de war brengen door het feit dat tekenreeksen, getallen en Booleaanse letterwoorden kunnen worden behandeld als objecten met eigenschappen (bijv.., true.toString ()
). Wanneer deze primitieve waarden worden behandeld als objecten door te proberen toegang te krijgen tot hun eigenschappen, maakt JavaScript een wrapper-object van de gekoppelde constructor van de primitive, zodat de eigenschappen en methoden van het wrapper-object toegankelijk zijn.
Nadat de eigenschappen zijn benaderd, wordt het wrapper-object verwijderd. Met deze conversie kunnen we code schrijven waardoor het lijkt alsof een primitieve waarde in feite een object was. De waarheid wordt verteld dat als JavaScript als een object in code wordt behandeld, JavaScript dit naar een object zal converteren, zodat toegang tot de eigenschap zal werken en het vervolgens naar een primitieve waarde zal converteren zodra een waarde is geretourneerd. Het belangrijkste om op te merken is wat er gebeurt en dat JavaScript dit achter de schermen doet.
Hier zijn een paar voorbeelden om te laten zien waar ik het over heb:
Stringvoorbeeld: sample56.html
Getalvoorbeeld: voorbeeld57.html
Boolean-voorbeeld: sample58.html
Wanneer u rechtstreeks een eigenschap op een primitief nummer opent (niet opgeslagen in een variabele), moet u eerst het nummer evalueren voordat de waarde als een object wordt behandeld (bijv.., (1) .toString ();
of 1 ... toString ();
). Waarom twee punten? De eerste punt wordt beschouwd als een numeriek decimaal, niet als een operator voor toegang tot objecteigenschappen.
De letterlijke / primitieve waarden die een tekenreeks, getal of Booleaanse waarde vertegenwoordigen, zijn sneller te schrijven en zijn beknopter in de letterlijke vorm.
Gebruik daarom de letterlijke waarde. Bovendien, de nauwkeurigheid van de soort van
operator hangt af van hoe u de waarde creëert (letterlijk versus constructor aanroep). Als u een tekenreeks, getal of Boolean-object maakt, is de soort van
operator meldt het type als een object. Als u letterlijke tekens gebruikt, gebruikt u de soort van
operator retourneert een reeksnaam van het werkelijke waardetype (bijv., typeof 'foo' // geeft 'string' terug
).
Ik bewijs dit feit in de volgende code.
Voorbeeld: sample59.html
Als uw programma afhankelijk is van de soort van
om tekenreeks, nummer of Booleaanse waarden te identificeren in termen van die primitieve typen, moet u het voorkomen Draad
, Aantal
, en Boolean
constructeurs.