Arbetar med primitiva sträng-, nummer- och boolesvärden

Bli inte mystified av det faktum att sträng, nummer och booleska bokstäver kan behandlas som ett objekt med egenskaper (t.ex.., true.toString ()). När dessa primitiva värden behandlas som objekt genom att försöka få åtkomst till deras egenskaper skapar JavaScript ett wrapperobjekt från primitivens tillhörande konstruktör så att egenskaperna och metoderna för omslagets objekt kan nås.

När egenskaperna har nåts, kasseras omslaget. Denna omvandling tillåter oss att skriva kod som skulle få det att verka som om ett primitivt värde faktiskt var ett objekt. Sanningen berättas, när det behandlas som ett objekt i kod, kommer JavaScript att konvertera det till ett objekt så egenskapsåtkomst kommer att fungera och konvertera sedan det till ett primitivt värde när ett värde returneras. Det viktigaste att märka här är vad som händer, och det gör JavaScript för dig bakom kulisserna.


Primitiva värdeprover

Här är några exempel på att visa vad jag pratar om:

Strängprov: sample56.html

 

Antal prov: sample57.html

 

Booleskt prov: sample58.html

 

När du åtkomst till en egenskap på ett primitivt tal direkt (inte lagrat i en variabel) måste du först värdera numret innan värdet behandlas som ett objekt (t.ex.., (1) .toString (); eller 1 ... toString ();). Varför två prickar? Den första punkten anses vara ett numeriskt decimaltal, inte en operatör för att komma åt objektegenskaper.


Du bör typiskt använda primitiva sträng-, nummer- och boolesvärden

De bokstavliga / primitiva värdena som representerar en sträng, ett tal eller en booleska är snabbare att skriva och är mer kortfattade i bokstavsform.

Du borde använda det bokstavliga värdet på grund av detta. Dessutom, noggrannheten hos sorts Operatören beror på hur du skapar värdet (bokstavligt kontrakonstruktion). Om du skapar en sträng, ett tal eller ett booleskt objekt, kommer sorts Operatören rapporterar typen som ett objekt. Om du använder bokstäver, sorts operatören returnerar ett strängnamn av den aktuella värde typen (t.ex.., typof 'foo' // returnerar 'sträng').

Jag demonstrerar detta i följande kod.

Prov: sample59.html

 

Slutsats

Om ditt program beror på sorts operatör för att identifiera sträng-, nummer- eller booleska värden i termer av de primitiva typerna, bör du undvika Sträng, siffra, och Boolean konstruktörer.